gpt4 book ai didi

c# - 在线程内设置引用变量

转载 作者:行者123 更新时间:2023-11-30 22:26:26 25 4
gpt4 key购买 nike

我在线程内设置引用变量时遇到问题。

Error:
"Cannot use ref or out parameter 'output' inside an anonymous method, lambda expression, or query expression"

有什么方法可以让它工作或达到类似的效果吗?

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)或通过添加任务延续来完成时获取结果。

关于c# - 在线程内设置引用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11802941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com