【发布时间】:2013-02-07 21:51:38
【问题描述】:
我有一个 WPF 应用程序,其中包含一个填充用户的组合框、一个显示所选用户的一些数据的网格和一个调用 DoTimeSheetReport() 的按钮。
DoTimeSheetReport() 做了一些工作,然后打开一个带有 SSRS 报告的新窗口。一切正常,但该方法需要很长时间才能完成,主要是因为报告,这意味着我的 UI 变得无响应。我尝试了几种方法来启动一个新的线程/任务,但它们都阻塞了 UI 的线程。我可能做错了什么,但我不知道。
为了不阻塞 UI,调用长方法的最佳方法是什么?
编辑
我更改了代码以隔离耗时的部分。
reportViewer.SetPageSettings(reportConfiguration.PageSettings);
在这部分使用 backgroundWorker 做到了。感谢您的帮助。
@LuisQuijada:那行得通,发布一个答案,以便我接受。
【问题讨论】:
-
你能展示你当前的代码在做什么(开始一个新线程吗?)
-
你试过用异步调用替换你的调用吗?
-
使用后台工作者。见其他SO thread
-
@LuisQuijada 成功了,发布一个答案,以便我接受。
-
@fhlamarche 很高兴它成功了!不幸的是我不能在这里发布任何东西......
标签: c# wpf multithreading user-interface reporting-services