什么是.NET 3.5中的.NET 4.5中的Task.FromResult()

时间:2018-03-14 15:29:55

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

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

他们使用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,我无法使用async。

1 个答案:

答案 0 :(得分:0)

这个答案的灵感来自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;
    }
}

然后我将主方法更改为

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

    return Tasks.FromResult(0);
}