.NET 3.5 中 .NET 4.5 的 Task.FromResult() 等价物是什么
what is the equivalent of Task.FromResult() from .NET 4.5 in .NET 3.5
我正在使用钛代理来分析数据流量。
他们使用 Task.FromResult(0) 作为 return。我的环境是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);
}
我已经解决了问题 ,但我无法使用异步,因为它只有 .NET 3.5。
这个答案的灵感来自Link
我创建了一个新的 class 并命名为 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);
}
我正在使用钛代理来分析数据流量。
他们使用 Task.FromResult(0) 作为 return。我的环境是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);
}
我已经解决了问题
这个答案的灵感来自Link
我创建了一个新的 class 并命名为 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);
}