【问题标题】:what is the equivalent of Task.FromResult() from .NET 4.5 in .NET 3.5.NET 3.5 中的 .NET 4.5 中的 Task.FromResult() 的等价物是什么
【发布时间】:2018-08-23 05:15:07
【问题描述】:

我正在使用钛代理来分析数据流量。

他们使用 Task.FromResult(0) 作为回报。我的环境是 3.5 框架。

 m_proxyServer.ServerCertificateValidationCallback += OnCertificateValidation;

.NET3.5 框架中的 Tasks.FromResult(0) 可以用什么替换,因为我的环境只在 3.5 框架下工作。

public Task OnCertificateValidation(object sender,CertificateValidationEventArgs e)
    {           
        //set IsValid to true/false based on Certificate Errors
        e.IsValid = true;         

        return Task.FromResult(0);
    }

我已经解决了40422779 的问题,但我无法使用异步,因为它只有 .NET 3.5。

【问题讨论】:

  • 你为什么使用没有异步的任务?无论如何,您的所有代码都会同步。

标签: c# .net proxy .net-3.5 titanium-web-proxy


【解决方案1】:

这个答案的灵感来自Link

我创建了一个新类并命名为 Tasks 并实现了以下内容

public static class Tasks
{
    public static Task<TResult> FromResult<TResult>(TResult result)
    {
        var tcs = new TaskCompletionSource<TResult>();
        tcs.SetResult(result);
        return tcs.Task;
    }

    public static Task WhenAll(Task[] tasks)
    {
        return Task.Factory.ContinueWhenAll(tasks, (t) => t);
    }

    public static Task Delay(int millisecondsDelay)
    {
        var tcs = new TaskCompletionSource<object>();
        new Timer(_ => tcs.SetResult(null)).Change(millisecondsDelay, -1);
        return tcs.Task;
    }
}

然后我把main方法改成了

 public Task OnCertificateValidation(object sender,CertificateValidationEventArgs e)
{           
    //set IsValid to true/false based on Certificate Errors
    e.IsValid = true;         

    return Tasks.FromResult(0);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-01
    • 2010-10-02
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    相关资源
    最近更新 更多