我正在尝试像下面的代码一样加载
另外,我需要多次调用
我认为我的代码有很多问题,但我不知道如何解决它。你能否向我展示如何解决我的问题并指出我需要修复的地方?非常感谢。
loadingForm
。但它不起作用,loadingForm
不会消失,事件RunWorkerCompleted
也不会被调用。另外,我需要多次调用
loadingForm
和backgroundWorker
,所以每次调用后如何完全处理loadingForm
和backgroundWorker
?我认为我的代码有很多问题,但我不知道如何解决它。你能否向我展示如何解决我的问题并指出我需要修复的地方?非常感谢。
public partial class loginForm : Form
{
//....
private loadingForm lf;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
lf.Show();
While (backgroundWorker1.isBusy)
Application.DoEvents();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, DoWorkEventArgs e)
{
lf.Close();
}
private void connect()
{
//....
Thread mainThread = new Thread(ThreadStart(listentoServer));
mainThread.Start();
}
private void listentoServer()
{
//....
lf = new loadingForm();
backgroundWorker1.RunWorkerAsync();
//....
backgroundWorker1.CancelAsync();
//....
}
}
BackgroundWorker
)。从您的主要UI线程中,然后可以启动后台操作,显示小的进度条(模态),并有BackgroundWorker.RunWorkerCompleted
事件关闭小的进度条。 - Stephen ClearyBackgroundWorker
都是独立的。如果您需要小进度窗体保持打开状态,则不要在RunWorkerCompleted
中关闭它。一般的指导方针如下:1)将所有 UI 访问和表单放在单个线程中;2)使用BackgroundWorker
(或Task
等)进行独立的后台任务。 - Stephen Cleary