gpt4 book ai didi

c# - BeginInvoke 回调函数

转载 作者:行者123 更新时间:2023-12-03 12:49:42 24 4
gpt4 key购买 nike

我有一个 c# .NET winforms 应用程序进行此异步调用:

simpleDelegate.BeginInvoke(null, null);

委托(delegate)正在调用我的函数,一切正常。问题是,在工作线程上函数完成后,我需要主线程来更新我的 winform 上的一些控件。如果工作线程试图更新这些控件,.NET 就会崩溃。但我需要主线程保持对用户操作的响应,然后仅在工作线程完成调用异步函数后调用我的函数 UpdateFormAfterServerCall()。

如果你能给我一个简洁的代码示例,而不是抽象地解释如何做到这一点,我将不胜感激。我已经阅读了一百个解释,只是无法正确地将它们连接在一起。

注意:在 BeginInvoke 之前我有:

simpleDelegate = new MethodInvoker(CallServer);

最佳答案

如果你想更新另一个线程拥有的 GUI,请从不同的线程使用 MethodInvoker

if(control.InvokeRequired)
control.Invoke( (MethodInvoker) ( ()=> updating_function() ) );
else
updating_function();

关于c# - BeginInvoke 回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10950029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com