4

我有一个 WPF 应用程序,其中包含一个填充用户的组合框、一个显示所选用户的一些数据的网格和一个调用 DoTimeSheetReport() 的按钮。

DoTimeSheetReport() 做了一些工作,然后打开一个带有 SSRS 报告的新窗口。一切正常,但该方法需要很长时间才能完成,主要是因为报告,这意味着我的 UI 变得无响应。我尝试了几种方法来启动一个新的线程/任务,但它们都阻塞了 UI 的线程。我可能做错了什么,但我不知道。

为了不阻塞用户界面,调用长方法的最佳方法是什么?

编辑

我更改了代码以隔离耗时的部分。

reportViewer.SetPageSettings(reportConfiguration.PageSettings);

在这部分使用 backgroundWorker 做到了。谢谢您的帮助。

@LuisQuijada:那行得通,请发布答案,以便我接受。

4

2 回答 2

11
using System.Threading;
new Thread(() => 
{
    Thread.CurrentThread.IsBackground = true; 
    /* run your code here */ 
    Console.WriteLine("Hello, world"); 
}).Start();
于 2013-02-07T21:53:53.093 回答
1

简而言之:你需要做的是看看如何使用异步调用

作为开始,您可以查看帖子和/或 MSDN 文章中的建议链接:

于 2013-02-07T22:00:28.680 回答