我试图为我用c#编码的应用程序做一个等待屏幕。
当用户点击开始时,为了防止可能出现的错误只是在中间显示一条消息,我使用了backgroundWorker,但并不像我想的那样工作。
我有这个:
backgroundWorker1.RunWorkerAsync(formwaiddt.ShowDialog());
问题是程序等到我关闭此对话框。
我也尝试过这样的其他方法 Can you link to a good example of using BackgroundWorker without placing it on a form as a component?
我获得了相同的结果。
然后任何人都知道如何在屏幕中间显示消息,我也创建了一个面板,但没有正确显示它,以锁定用户交互
感谢。
答案 0 :(得分:1)
最简单的情况是使用BackgroundWorker创建一个与委托签名匹配的方法,将该方法附加到BackgroundWorker的DoWork事件,然后调用BackgroundWorker的RunWorkerAsync()方法:
// Set your cursor to busy
Cursor.Current = Cursors.WaitCursor;
BackgroundWorker backgroundWorkerExample = new BackgroundWorker();
backgroundWorkerExample.DoWork += new DoWorkEventHandler(backgroundWorkerExample_DoWork);
backgroundWorkerExample.RunWorkerAsync();
// elsewhere:
void backgroundWorkerExample_DoWork(object sender, DoWorkEventArgs e)
{
// body of the work elided
}
当后台工作线程完成后,它会在前台线程上引发RunWorkerComplete事件,因此您可以使用以下命令将光标切换回正常状态:
Cursor.Current = Cursors.Default;
或者,您可以使用WorkerReportsProgress属性通知BackgroundWorker工作程序将定期向前台线程报告进度。
答案 1 :(得分:0)
您是否尝试在计时器上连接事件,以便它在单独的线程上运行以检查进程是否已完成?