【发布时间】:2022-11-21 17:40:59
【问题描述】:
我有异步操作,我在其中调用了一个非空方法:
var result = _controller.SendInvoice(this.ParentForm);
我收到错误“跨线程操作无效:从创建它的线程以外的线程访问控件‘ParentForm’”
我已经设法通过编写如下代码来修复它:
ParentForm.Invoke(new MethodInvoker(delegate { _controller.SendInvoice(ParentForm); }));
问题是我必须获得方法 SendInvoice 的返回结果,但是上面的“解决方案”并没有为我解决它,因为它没有从 SendInvoice() 方法返回值。
【问题讨论】:
-
试试
var result = ParentForm.Invoke(() => _controller.SendInvoice(ParentForm));。 MethodInvoker 委托不支持返回值。
标签: c# .net multithreading