所以我有一个C#WPF应用程序,它从报表服务器运行报表,并编辑结果以显示在Chrome中。
由于数据库的大小和报表服务器的速度,进程在执行报表时始终挂起(ReportExecutionService.Render()方法)。
这导致应用程序冻结并在窗口标题中显示“ - (Not Responding)”。
它始终如此,并且它总是在几分钟后工作,所以我真的想阻止这种情况发生,或者甚至可能将消息更改为“ - (加载报告)”以更好地代表实际发生的事情。
这可能吗?
答案 0 :(得分:2)
让它异步!
public Task DatabaseActionAsync(string argument)
{
return Task.Run(() =>
DatabaseAction(argument));
);
}
无论你怎么称呼它:
await DatabaseActionAsync(argument);
答案 1 :(得分:0)
使用另一个线程来编写报告生成代码。然后不阻止UI线程
new Thread(() =>
{
Thread.CurrentThread.IsBackground = true;
// your code here
}).Start();