相关疑难解决方法(0)

如果我的接口必须返回Task,那么实现无操作的最佳方法是什么?

在下面的代码中,由于接口,类LazyBar必须从它的方法返回一个任务(并且为了参数而不能更改).如果LazyBars的实现是不寻常的,那么它恰好快速且同步地运行 - 从方法返回No-Operation任务的最佳方法是什么?

我已经在Task.Delay(0)下面了,但是我想知道如果这个函数被调用了很多(如果参数起见,比如说每秒数百次),这是否有任何性能副作用:

  • 这种语法糖会不会变成大事?
  • 它是否开始堵塞应用程序的线程池?
  • 编译器切割器是否足以以Delay(0)不同方式处理?
  • 请问return Task.Run(() => { });有什么不同?

有没有更好的办法?

using System.Threading.Tasks;

namespace MyAsyncTest
{
    internal interface IFooFace
    {
        Task WillBeLongRunningAsyncInTheMajorityOfImplementations();
    }

    /// <summary>
    /// An implementation, that unlike most cases, will not have a long-running
    /// operation in 'WillBeLongRunningAsyncInTheMajorityOfImplementations'
    /// </summary>
    internal class LazyBar : IFooFace
    {
        #region IFooFace Members

        public Task WillBeLongRunningAsyncInTheMajorityOfImplementations()
        {
            // First, do something really quick
            var x = 1; …
Run Code Online (Sandbox Code Playgroud)

.net c# threadpool task-parallel-library async-await

390
推荐指数
6
解决办法
14万
查看次数