【发布时间】:2015-04-22 13:03:18
【问题描述】:
我对多线程非常陌生,因此,我确信我的整个问题很可能是错误的,但这更多的是让我了解事情如何正确完成,所以我希望你能原谅和任何解释设置为“白痴”级别将不胜感激!!!!
假设我的 WinForm 外部有以下类:
public class test
{
public void RunOnSeparateThread()
{
// Some function that takes an AsyncCallback as a parameter and runs Asynchronously
// Returns IAsyncResult
foo(m_asyncCallback);
}
private AsyncCallback m_asyncCallback = new AsyncCallback(AsyncComplete);
private static void AsyncComplete(IAsyncResult result)
{
// Whatever disposal stuff needs to be done, etc.
}
}
现在,我想做的是在我的 winform 上有一个按钮,按下时:
- 禁用按钮
- 在单独的线程上运行
RunOnSeparateThread进程(不占用 GUI 线程)
然后,当异步进程完成时:
- 在
Test类中运行AsyncComplete方法 - 重新启用表单上的按钮(
Form类中可能还有其他一些东西)
正如我所说,这对我来说是全新的。我想象的可以做的是在表单上创建一个 AsyncCallback 委托并将其传递给我的类(作为属性??)并让 AsyncComplete 方法在最后运行它,但似乎可以是非常糟糕的编程。
最好/正确的方法是什么 - 请理解我是这类东西的主要新手,所以我非常感谢任何链接/解释,以便了解多线程的正确方法像这样的场景。
此外,虽然这是用 C# 编写的,但我对 VB 和 C# 也同样熟悉,因此我们将不胜感激任何答案。
谢谢!!!
【问题讨论】:
标签: c# .net vb.net multithreading asynchronous