线程c#如何放置等待屏幕

时间:2015-03-13 15:30:21

标签: c# multithreading

我试图为我用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?

我获得了相同的结果。

然后任何人都知道如何在屏幕中间显示消息,我也创建了一个面板,但没有正确显示它,以锁定用户交互

感谢。

2 个答案:

答案 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)

您是否尝试在计时器上连接事件,以便它在单独的线程上运行以检查进程是否已完成?