gpt4 book ai didi

c# - TPL Fire and Forget 使用单独的类

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

我正在尝试使用任务并行库实现即发即弃功能。通过对 Task.Factory.StartNew 的内联调用,一切都按预期进行。但是,我想将 Task.Factory.StartNew 调用移动到一个单独的类中,以便我可以添加日志记录、错误处理等,并可能在未来将代码升级为更好的线程类等被添加到 .NET Framework,无需重复代码。

下面是我希望通过的单元测试,但事实并非如此。如果能帮助我弄清楚如何使这项工作成功,我将不胜感激。

[TestFixture]
public class ThreadingServiceFixture
{
public static bool methodFired = false;

[Test]
public void CanFireAndForgetWithThreadingService()
{
try
{
var service = new ThreadingService();

service.FireAndForget(() => methodFired = true);

var endTime = DateTime.Now.AddSeconds(1);

while(DateTime.Now < endTime)
{
//wait
}

Assert.IsTrue(methodFired == true);
}
finally
{
methodFired = false;
}
}

}

public class ThreadingService
{
public Task FireAndForget(Action action)
{
return Task.Factory.StartNew(() => action);
}
}

最佳答案

您没有执行操作,您只是返回它。

尝试:

return Task.Factory.StartNew(() => action());

关于c# - TPL Fire and Forget 使用单独的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12238765/

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