Trong ứng dụng của tôi, tôi có một chuỗi hiển thị một thời gian "vui lòng chờ" cửa sổ hộp thoại, đôi khi nó là một thời gian rất nhỏ và có một số trục trặc trong khi vẽ Giao diện người dùng (tôi đoán)."Chủ đề đã bị hủy bỏ" ngoại lệ trong khi hiển thị hộp thoại
Tôi nhận được ngoại lệ "Chủ đề đã bị hủy bỏ" và hoàn toàn không biết làm thế nào để loại bỏ nó. Tôi có nghĩa là Bắt ngoại lệ đó theo một cách nào đó, hoặc theo cách nào khác ẩn nó khỏi người dùng. Ngoại lệ này không liên quan gì đến phần còn lại của ứng dụng của tôi và lỗi đó theo bất kỳ cách nào không ảnh hưởng đến nó. Xuất hiện ngẫu nhiên và rất khó để tạo lại cuộc gọi.
Tôi đã thử theo nhiều cách khác nhau để bắt ngoại lệ đó bên cạnh mã bắt đầu và dừng luồng với cửa sổ hộp thoại nhưng dường như lỗi đó nằm bên cạnh một số luồng khác phân phối cửa sổ trong chuỗi mới tạo của tôi. Dưới đây là một mẫu mã, một phần của lớp tĩnh với các công cụ hữu ích, tất nhiên tôi không nói đó là cách tốt để giải quyết tình trạng "bận" này nhưng tôi muốn giải quyết vấn đề này. Thread.Sleep (500); hoặc các hiệu ứng try/catch khác không giúp tôi tránh được ngoại lệ của luồng đó.
public static bool alreadyBusy = false;
public static BusyIndicator bi = new BusyIndicator("");
public static Thread backgroundOpertionThread;
public static void showBusy(bool isBusy, System.Windows.Forms.Form hostform, string message)
{
Common.busyMessage = message;
if (isBusy)
{
Common.alreadyBusy = true;
backgroundOpertionThread = new Thread(new ThreadStart(showBusy));
Thread.Sleep(500);
if (hostform != null)
{
hostform.Enabled = false;
hostform.SuspendLayout();
}
backgroundOpertionThread.Start();
}
else
{
backgroundOpertionThread.Abort();
Thread.Sleep(500);
Common.alreadyBusy = false;
if (hostform != null)
{
hostform.Enabled = true;
hostform.ResumeLayout();
}
}
}
public static void showBusy()
{
BusyIndicator bir = new BusyIndicator(Common.busyMessage);
bir.ShowDialog();
}
Bất kỳ ý tưởng nào?
Bạn có thể cập nhật câu hỏi của mình bằng mẫu mã không? – jezell