gpt4 book ai didi

c# - 在当前线程执行任务

转载 作者:IT王子 更新时间:2023-10-29 04:30:44 24 4
gpt4 key购买 nike

是否可以强制任务在当前线程上同步执行?

也就是说,是否有可能,例如将一些参数传递给 StartNew() , 使这段代码:

Task.Factory.StartNew(() => ThisShouldBeExecutedSynchronously());

表现如下:

ThisShouldBeExecutedSynchronously();

背景:

我有一个名为 IThreads 的接口(interface):

public interface IThreads
{
Task<TRet> StartNew<TRet>(Func<TRet> func);
}

我想对此有两种实现方式,一种是使用线程的普通方式:

public class Threads : IThreads
{
public Task<TRet> StartNew<TRet>(Func<TRet> func)
{
return Task.Factory.StartNew(func);
}
}

还有一个不使用线程的(用于一些测试场景):

public class NoThreading : IThreads
{
public Task<TRet> StartNew<TRet>(Func<TRet> func)
{
// What do I write here?
}
}

我可以让 NoThreading版本只需调用 func() , 但我想返回 Task<TRet> 的一个实例我可以在其上执行诸如 ContinueWith() 之类的操作.

最佳答案

您可以简单地返回包含在 Task 中的 func() 的结果。

public class NoThreading : IThreads
{
public Task<TRet> StartNew<TRet>(Func<TRet> func)
{
return Task.FromResult(func());
}
}

现在您可以将“继续”任务附加到此。

关于c# - 在当前线程执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20066271/

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