[英]How do I use Async in c#?
我正在做 c # 表格申请。 该应用程序基本上是一个视频转换器实现。 我有两个按钮,称为转换和转换停止。 这就是我想做的; 我不希望表单自行锁定,即使我单击其中任何一个。 届时我可能会取消该过程或关闭表格。 我需要做异步,但我不知道怎么做。 我不能使用后台工作人员,因为我基本上是在处理大数据。 他可以更多地锁定表格。 请帮忙。
转换停止代码;
private void Button7_Click(object sender, EventArgs e)
{
var ffmpeg = new NReco.VideoConverter.FFMpegConverter();
ffmpeg.Stop();
MessageBox.Show("convert is stopped");
}
像这样:
private async void Button7_Click(object sender, EventArgs e)
{
await Task.Run(() =>
{
//code here that takes a long time. NB nothing that must be run on the main thread
var ffmpeg = new NReco.VideoConverter.FFMpegConverter();
ffmpeg.Stop();
});
//when the above task completes this will then be called on the original thread context (i.e. the main ui thread)
MessageBox.Show("convert is stopped");
}
请注意,MessageBox.Show 将在任务完成后调用,但控件将在等待调用时返回主线程。 这就是让刚接触异步的人感到困惑的地方。
另请注意,通常异步 function 将具有Task
或Task<T>
返回类型,但由于这是一个事件处理程序,它具有 void 返回类型。 这是 void 返回类型对于异步 function 正确的少数情况之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.