【发布时间】:2012-03-08 14:13:35
【问题描述】:
我在单独的线程上运行一个进程以促进并发和流畅的用户界面调用
private void ThreadedTestConnection(SqlConnection conn, bool bShowErrMsg)
{
Task<bool> asyncTestConn = Task.Factory.StartNew<bool>
(() => TestConnection(conn, bShowErrMsg));
return asyncTestConn.Result;
asyncTestConn.Dispose();
}
来自 UI 线程。但是,return asyncTestConn 引起的“等待”正在阻止 UI 线程被释放回 GUI。我想出了以下修复方法。从我拥有的 GUI 触发的事件中(不包括 try/catch 块)
private void SomeClick_Event(object sender, EventArgs e)
{
Task testConnection = Task.Factory.StartNew
(() => UtilsDB.ThreadedTestConnection(mainConn, true));
}
这行得通。也就是说,它会立即将控制权返回给 GUI,同时在单独的后台线程上运行测试。我这样做是不是一个非常愚蠢的男孩,或者这样可以吗?
注意:这是一个单独的问题,但与 this one 有关,我还没有收到令人满意的答案。
【问题讨论】:
标签: c# task task-parallel-library