正在线程内部设置引用的变量
本文关键字:引用 变量 设置 内部 线程 | 更新日期: 2024-09-22 15:33:15
我在线程内部设置引用变量时遇到问题。
错误:
"不能在匿名方法、lambda表达式或查询表达式"
有什么方法可以让它发挥作用或达到类似的效果吗?
public static void LoadThreaded<T>(string path, ref T output)
{
ThreadStart threadStart = delegate
{
output = Loader<T>(path);
};
new Thread(threadStart).Start();
}
问题是,由于output
是由不同的线程设置的,因此该方法在设置output
变量之前返回(必须)。
这里最好的选择是使用TPL来返工,即:
Task<T> LoadThreaded<T>(string path)
{
return Task.Factory.StartNew( () => Loader<T>(path) );
}
这允许您启动此异步操作,并在完成时通过阻塞(调用output.Result
)或添加任务延续来获得结果。