Birinizin, belirli bir iş parçacığında atılan bir özel durumun uygulamada nasıl yakalanacağı hakkında bir fikri var mı? ÖrneğinBir iş parçacığının işlenmemiş istisnasını yakalama
, çok basit bir iş parçacığı bazı temel şeyler yapıyor olması:
try
{
Thread t = new Thread(new ThreadStart(Cache.initialize));
t.Start();
t.Name = "loading";
while (t.IsAlive)
{
progressBar1.PerformStep();
}
}
catch (PropertyOrFieldNotInitializedException ex)
{
Console.WriteLine(ex.StackTrace);
MessageBox.Show("L'application ne peut se connecter au serveur, vérifiez votre connexion");
}
sorun ..
istisna ana yığınında alınamaz çünkü bu yakalama, yararsız olmasıdırpublic static void initialize()
{
try
{
ctxMdv = new ClientContext(Configuration.getInstance().UrlMdv);
...
}
catch (PropertyOrFieldNotInitializedException e) //si le serveur n'est pas démarré
{
throw ;
}
burada her şey "atma" noktasında durur ve hiçbir şey, ana yığında bir mesaj kutusu görüntülemeyi yakalamaya çalışmış olsa bile işlenmez. Peki iş parçamda bu PropertyOrFieldNotInitializedException nasıl yakalanabilir? C# içinde bir iş parçacığı özel durum yakalamak için bazı en iyi uygulama var mı?
Çok teşekkür ederim!
Not: Aşağıdaki Thorsten Dittmar verdiği cevaba Tamam teşekkürler, ben bu işe yapabiliriz:
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
Cache.initialize(); // the thread job
}
: Burada ana iş parçacığı burada
BackgroundWorker bw = new BackgroundWorker();
bw.WorkerReportsProgress = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.RunWorkerAsync();
benim DoWork burada o bir istisna yükseltilir bile olur, mi olayı tamamlanmış olup:
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (!(e.Error == null))
if (e.Error is WebException)
Console.WriteLine(e.Error.StackTrace);
MessageBox.Show("L'application ne peut se connecter au serveur, vérifiez votre connexion");
this.Dispose();
Application.Exit();
}
Ve ilerleme çubuğunu düzeltmek için ProgressChanged temsilcisini işlemeyi planlıyorum ...;) teşekkür ederim!
tamam ilerleme çubuğu güncelleyebilirsiniz
! işe yarıyor ! çok teşekkür ederim ! İleti kodumu yayınladığım için gönderiimi düzenleyeceğim – KitAndKat