वर्ग नीचे दिए गए, एक वैकल्पिक धागा पर स्प्लैश स्क्रीन शुरू करने के लिए की TPL समतुल्य:थ्रेड क्लास 'स्पलैश प्रकार' स्क्रीन
public partial class SplashForm : Form
{
private static Thread _splashThread;
private static SplashForm _splashForm;
public SplashForm()
{
InitializeComponent();
}
// Show the Splash Screen (Loading...)
public static void ShowSplash()
{
if (_splashThread == null)
{
// Show the form in a new thread.
_splashThread = new Thread(new ThreadStart(DoShowSplash));
_splashThread.IsBackground = true;
_splashThread.Start();
}
}
// Called by the thread.
private static void DoShowSplash()
{
if (_splashForm == null)
_splashForm = new SplashForm();
// Create a new message pump on this thread (started from ShowSplash).
Application.Run(_splashForm);
}
// Close the splash (Loading...) screen.
public static void CloseSplash()
{
// Need to call on the thread that launched this splash.
if (_splashForm.InvokeRequired)
_splashForm.Invoke(new MethodInvoker(CloseSplash));
else
Application.ExitThread();
}
}
यह कहा जाता है और निम्नलिखित संबंधित आदेशों के साथ बंद कर दिया है
SplashForm.ShowSplash();
SplashForm.CloseSplash();
ठीक है।
Task task = Task.Factory.StartNew(() =>
{
SomeForm someForm = new SomeForm();
someForm.ShowDialog();
};
मेरे इस मुद्दे को इस SomeForm
नीचे बंद हो रहा है जब आप तैयार हैं:
मैं बिल्कुल TPL के लिए नया नहीं हूँ, बेशक हम के रूप में सरल कुछ का उपयोग कर एक और धागा पर प्रपत्र दिखा सकते हैं। वहाँ की तरह
private static SomeForm _someForm;
public static void CloseSomeForm()
{
if (_someForm.InvokeRequired)
_someForm.Invoke(new MethodInvoker(CloseSomeForm));
}
मेरा प्रश्न है, SomeForm
कक्षा में एक public static
विधि बनाने की तुलना में एक बेहतर तरीका होना चाहिए क्या एक ही बात करने के लिए सबसे अच्छा तरीका है के रूप में कार्य समानांतर लाइब्रेरी का उपयोग करके उपरोक्त SplashForm वर्ग का उपयोग कर दिखाया है (TPL)? विशेष रूप से, यूआई से दूसरे धागे पर लगाए गए फॉर्म को बंद करने का सबसे अच्छा तरीका।
क्या है उद्देश्य स्प्लैश स्क्रीन को किसी अन्य धागे पर डाल रहा है? –
इसे सक्रिय रखने के लिए (एनिमेशन दिखाएं आदि)। यूआई को अवरुद्ध न करें। – MoonKnight