正在线程内部设置引用的变量

本文关键字:引用 变量 设置 内部 线程 | 更新日期: 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)或添加任务延续来获得结果