[英]“.NETFramework,Version=v4.0,Profile=Mono” issue vb.net, c#
[英]How to Perform Async & Await (like in .NetFramework 5.0) in C# .NetFramework 4.0?
当我添加以下代码来执行异步和等待时,
namespace loadmultipleimages
{
public partial class Form1 : Form
{
VideoCapture capture = new VideoCapture();
delegate void delHugeTask();
public Form1()
{
InitializeComponent();
}
public static /*async*/ Task CopyToAsync( this Stream input, Stream output, CancellationToken cancellationToken = default(CancellationToken))
{
return CopyToAsyncTasks(input, output, cancellationToken).ToTask();
}
private IEnumerable<Task> CopyToAsyncTasks(Stream input, Stream output, CancellationToken cancellationToken)
{
byte[] buffer = new byte[0x1000]; // 4 KiB
while (true)
{
cancellationToken.ThrowIfCancellationRequested();
var bytesReadTask = input.Read(buffer, 0, buffer.Length);
yield return bytesReadTask;
if (bytesReadTask.Result == 0) break;
cancellationToken.ThrowIfCancellationRequested();
yield return output.Write(buffer, 0, bytesReadTask.Result);
}
}
}
}
此错误在公共部分类Form1 的Form 1下弹出并带有蓝色下划线:Form
Error 1 Extension method must be defined in a non-generic static class
我知道如果你想使用静态方法,类也必须定义为静态。 但是如何解决这个问题呢?
最好的解决方案是将项目的目标框架更改为 4.8 之类的内容。 我知道支持 .NET 4.0 的唯一原因是继续支持 Windows XP。 在这种情况下,我建议您向做出该业务决策的人退缩:您是否绝对确定要支持Microsoft已经超过 7 年不支持的操作系统? 对我来说,这似乎有一些严重的责任问题。
但是,假设你无法说服你的老板支持一个古老的操作系统不是一个好主意,你可以使用Microsoft.Bcl.Async
NuGet 包来让async
/ await
工作。 请注意,这仅适用于桌面应用程序,不适用于 ASP.NET 应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.