表格显示后的c#生成过程

时间:2013-05-10 17:22:17

标签: c# c#-4.0

当我的主表单加载时,我想进行一些处理,例如加载查看的最后一个客户端。这种额外的处理导致表单的绘制非常难看。我在显示的表单上这样做,所以我希望表单可以完成绘画。

我使用过PostMessage ...是否有PostMessage的现代版本?在此处理过程中,我想设置沙漏光标。

3 个答案:

答案 0 :(得分:4)

我认为你要做的是后台处理。所以你可以使用BackgroundWorker class。加载表单时,您将启动后台工作程序,当工作程序完成时,它将通过RunWorkerCompleted事件通知您的表单。您甚至可以通过实施ProgressChanged事件从工作人员获取进度更新。

答案 1 :(得分:1)

如何使用Task + ContinueWith。 (如果升级到.Net 4.5 async / await将是更好的选择)。

private void Form_Load(object sender, EventArgs e)
{
    Task.Factory.StartNew(() =>
        {
            Thread.Sleep(5000); //Some long Running Jobs
            return "Finished";
        })
        .ContinueWith(t =>
            {
                this.Text = t.Result; //Update GUI
            },
            TaskScheduler.FromCurrentSynchronizationContext());

}

答案 2 :(得分:0)

我不确定您为什么要使用PostMessage。如果您使用PostMessage发布消息,它最终将由GetMessage获取,除非消息是从另一个帖子发布的,否则整个练习似乎有点徒劳。我在这里错过了什么吗?至于BackgroundWorker,请参阅Label is not set until method is done的解决方案。