0
我在一个单独的线程中运行的进程,以促进并发性和流畅的用户界面调用与TPL使用嵌入式任务工作
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有关,我还没有收到satasfactory答案。
非常感谢您的时间。我是否必须以最宽松的意义去处置“任务”或将其“垃圾收集”? – MoonKnight 2012-03-08 14:23:40
除非你使用事件处理,你将不必处置'Task' - 又见http://stackoverflow.com/questions/3734280/is-it-considered-acceptable-to-not-call-dispose-on -a-TPL-任务对象 – BrokenGlass 2012-03-08 14:25:49