c# - 如何在线程中运行方法并在线程退出时调用方法

标签 c# winforms multithreading process

我一直在寻找这个问题的答案,但找不到一个简单的例子来帮助我理解。我正在用 c# 编写 win form 应用程序,它包含了一堆用于视频编码的命令行工具。我有一个名为 encodefiles 的方法,我想在一个线程中运行这个方法,以便 UI 仍然可以运行。一旦线程完成,我希望它调用另一个方法,所以我知道它已经完成。然后我可以编码下一个文件或完成。一切都取决于是否还有更多文件要编码。

当我只运行一个命令行工具时,我得到了我想要的操作,因为我正在使用可以将完成的事件附加到的进程对象。我想对一个线程使用相同的方法,但不知道如何。

简而言之,我希望能够使用线程而不是进程来执行以下操作

Process myProcess = Process.Start(commandLineExe, commandlineSwitches);
myprocess.EnableRaisingEvents = true;
myprocess.Exited += new EventHandler(myprocess_exited);

希望这是有道理的

我在 visual studio 2010 中使用 c# .NET 3.5

最佳答案

好吧,如果你正在使用 winforms 并且你想在后台运行一个任务并在它完成时通知使用 backgroundworker

并处理 DoWork()、WorkerComplete()、progressChanged() 事件以完成您的工作。

关于c# - 如何在线程中运行方法并在线程退出时调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4076195/

相关文章:

winforms - XNA - 在表单中嵌入 DirectX 控件?

c# - DefaultAzureCredential 对于 AzureAppConfiguration 失败,但在本地运行时适用于 SecretClient

.net - 仅将CheckForIllegalCrossThreadCalls设置为false以避免在调试期间发生跨线程错误是否安全?

c# - 使用 Active Directory 使用本地用户登录

c# - 如何聆听某个进程发出的音频并将其与 5 秒的声音进行比较?

java - Android java加载 fragment 无延迟

multithreading - 传递值以同步线程

python - Python字典中的线程安全

c# - 如果系统日期错误,如何获取正确的日期

c# - 使用 linq 调用方法 x 次