【发布时间】:2019-10-28 16:02:15
【问题描述】:
我正在做 c# 表单应用程序。该应用程序基本上是一个视频转换器实现。我有两个按钮,称为转换和转换停止。这就是我想做的;我不希望表单自行锁定,即使我单击其中任何一个。届时我可能会取消该过程或关闭表格。我需要做异步,但我不知道怎么做。我不能使用后台工作人员,因为我基本上是在处理大数据。他可以更多地锁定表格。 请帮忙。
转换停止码;
private void Button7_Click(object sender, EventArgs e)
{
var ffmpeg = new NReco.VideoConverter.FFMpegConverter();
ffmpeg.Stop();
MessageBox.Show("convert is stopped");
}
【问题讨论】:
-
await Task.Run(() => { /* Put your CPU-bound code here */ });。不要忘记将async修饰符添加到您的事件处理程序中(即private async void Button7_Click(...). -
BackgroundWorker 不会锁定表单,你可以使用它。
-
这段代码到底在哪里?表单是在加载中,还是在您双击按钮时? @ahmed abdelhameed
-
看起来FFMpegConverter class 公开了启动和停止后台进程的方法。因此,您无需创建自己的线程。我认为您只需要将对对象的引用保留为表单字段而不是局部变量。
标签: c# winforms asynchronous converters