यदि आपका लक्ष्य स्प्लैश स्क्रीन को जितनी जल्दी हो सके प्राप्त करने के लिए कोई धागा फैलाने से प्राप्त करने के लिए कुछ भी नहीं है।
वहाँ छप स्क्रीन करने के कई तरीके हैं, और एक और अधिक परिष्कृत एक here उल्लेख किया गया है, लेकिन यह एक आसान विधि मैं पूर्ण सफलता के साथ इस्तेमाल किया है है: बस आप लोड और छप रूप को दिखाने सुनिश्चित पहले
, और उसके बाद उपयोगकर्ता अपने ऐप को लोड करना जारी रखता है जबकि उपयोगकर्ता सुंदर स्पलैश स्क्रीन देख रहा है। जब MainForm लोड हो रहा है किया है, यह छप सही बंद करने से पहले वह खुद को दिखाता है (करने के लिए एक आसान तरीका यह अपने निर्माता में MainForm के लिए छप रूप से पारित है):
static void Main()
{
Application.SetCompatibleTextRenderingDefault(false);
SplashForm splash = new SplashForm();
splash.Show();
splash.Refresh(); // make sure the splash draws itself properly
Application.EnableVisualStyles();
Application.Run(new MainForm(splash));
}
public partial class MainForm : Form
{
SplashForm _splash;
public MainForm(SplashForm splash)
{
_splash = splash;
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// or do all expensive loading here (or in the constructor if you prefer)
_splash.Close();
}
}
वैकल्पिक: यदि आप नहीं करना चाहते हैं MainForm (शायद यह असजीला लगता है), तो MainForm के लोड घटना की सदस्यता, और वहाँ स्प्लैश स्क्रीन बंद करने के लिए छप पारित करने के लिए:
static class Program
{
static SplashForm _splash;
[STAThread]
static void Main()
{
Application.SetCompatibleTextRenderingDefault(false);
_splash = new SplashForm();
_splash.Show();
_splash.Refresh();
Application.EnableVisualStyles();
MainForm mainForm = new MainForm();
mainForm.Load += new EventHandler(mainForm_Load);
Application.Run(mainForm);
}
static void mainForm_Load(object sender, EventArgs e)
{
_splash.Dispose();
}
}
रूप this thread में उल्लेख किया है, इस समाधान के लिए संभावित नकारात्मक पक्ष यह है कि है उपयोगकर्ता स्प्लैश स्क्रीन से बातचीत करने में सक्षम नहीं होगा। हालांकि, आमतौर पर इसकी आवश्यकता नहीं होती है।
स्रोत
2010-03-25 17:54:35
यह एक दिलचस्प दृष्टिकोण है। क्या आप वास्तव में एसटीए थ्रेड बनाने के तरीके पर विस्तार कर सकते हैं। – AngryHacker
धागे को फैलाना काउंटर-उत्पादक है। लक्ष्य स्प्लैश स्क्रीन दिखाने के लिए जितना समय लगता है, उतना ही कम करना है, तो ऐप लोड प्रक्रिया के साथ अपने चक्र साझा करके इसे धीमा क्यों करें? स्पलैश दिखाने के लिए सबकुछ समर्पित करने के लिए सर्वश्रेष्ठ, फिर बाकी ऐप लोड करें। –
@ चार्ल्स: यदि आप मुख्य धागे पर स्पलैश दिखाते हैं, तो उसे कोई संदेश नहीं मिलेगा और जवाब देना बंद कर देगा। – SLaks