问题标签 [begininvoke]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5447 浏览

c# - BeginInvoke 的@object 参数应该传递什么?

我有一个事件委托,定义如下:

我异步引发事件:

随后,签名BeginInvoke看起来像:

在我见过BeginInvoke的大多数示例中,调用@object参数是null,但我找不到解释该参数用途的文档。

那么该参数的目的是什么?我们可以用它做什么?

0 投票
5 回答
48144 浏览

c# - Dispatcher.BeginInvoke:无法将 lambda 转换为 System.Delegate

我试着打电话System.Windows.Threading.Dispatcher.BeginInvoke。该方法的签名是这样的:

我正在尝试将 Lambda 传递给它,而不必创建一个委托。

它给了我一个编译器错误,说我

无法将 lambda 转换为 System.Delegate。

委托的签名将对象作为参数并返回 void。我的 lambda 与此匹配,但它不起作用。我错过了什么?

0 投票
1 回答
3598 浏览

c# - 等到一个委托被调用

我有一个带有方法的异步类,当它完成处理时StartProcessing()会引发一个事件。花费很少的时间。int ResultReady()StartProcessing()

我想同步调用这个类。我的伪代码应该是这样的:

  1. 调用 StartProcessing()

  2. 等待/睡眠,直到结果准备好

  3. 返回结果

什么设计模式最适合这个?你能指点我一个代码示例吗?

0 投票
2 回答
46107 浏览

c# - 关于 AsyncCallback 和 IAsyncResult 模式的两个问题

关于 AsyncCallback 和 IAsyncResult 的回调模式的两个问题。

我用一个代码示例改变了这个问题:

开始编辑
我开始看到发生了什么。我混合了 WCF 异步模式和普通异步模式。在 WCF 中,使用代理并且 Begin- 和 EndMethod 必须通过代理而不是函数委托。在 WCF 的情况下,铸造工作,在正常情况下不是。WCF 使用 [OperationContract(AsyncPattern = true)] 属性可能是为了强制执行一些不同的模式。结束编辑

为什么出错就行了return (string)(result.AsyncState);
生产代码中完全相同的模式是可以的。

其次,为什么不能在Test类的BeginMethod中调试代码?
我只能打破 WorkerFunction。

0 投票
1 回答
659 浏览

c# - BeginInvoke 不传递数据但使用 Invoke 导致异常

我有一个在网格视图中显示数据的 Windows 窗体应用程序。数据正在从后台工作线程自动刷新(从数据库中获取)。因此,为了避免任何跨线程引用,在后台线程的 DoWork 方法中,我调用 GridView.BeginInvoke() 并传递消息列表。但是在委托方法中,消息列表是空的。

如果我使用 GridView.invoke(),messageList 确实包含这些值,但有时会出现一个异常,提示“对象当前正在其他地方使用”,我认为这是由于在非 UI 线程上引用 UI 控件引起的。

我怎么解决这个问题?

0 投票
3 回答
1156 浏览

c# - GUI 对象何时需要调用?

使用 C# Windows.Forms,Invalidate()、Refresh() 等方法是否必须在主/GUI 线程上运行(需要 Invoke/BeginInvoke)?如何更改 GUI 对象的成员,例如添加/删除点或更改 Charting.Chart 对象中系列的颜色?

我在工作线程中发生了其中一些更改而没有任何问题(所以我猜它们没问题?),但我试图区分 GUI 线程上明确需要哪些更改以及哪些更改可以在对象上发生工作线程。有没有人有关于这个主题的指导的链接或书籍参考?

0 投票
3 回答
7813 浏览

c# - BeginInvoke() 是否运行单独的线程?

在我的 WPF 应用程序中,我想在非 UI 线程中做一些工作,以避免 UI 变得无响应。为此,我这样做了:

委托被定义为,

我的问题是:

是否BeginInvoke()创建一个新线程并在其中SetPatternType运行回调?如果是这样,这个线程会持续多久?

这种方法一般好吗?如果不是,它有什么问题?我可能面临哪些潜在问题?

我正在使用 C# 4.0 和 Visual Studio 2010。


编辑:

我也需要一些关于这些的指导方针:

我什么时候应该自己创建一个新线程,什么时候应该使用BeginInvoke()?我什么时候应该使用DispatcherObject.Dispatcher.BeginInvoke()对象?

0 投票
2 回答
911 浏览

c# - 如何实现异步工作流?

我使用上面的代码来实现异步工作流。我希望运行这个工作流 10 次,我有类似的线程池,所以 10 个工作流线程可以同时运行。第二个不需要等待第一个完成它的工作。我的工作流程非常简单,它会做一些计算并在屏幕上打印几个句子。在我运行上面的代码之后,我发现这 10 个工作流似乎是被一个一个调用的,而不是我希望同时运行的。异步工作流程的正确方法是什么?谢谢!

更新:在其他人的一些反馈之后,我也尝试使用 workflowapplication 异步执行此操作:

以下是运行结果: 2011 年 4 月 8 日上午 9:57:49 2011 年 4 月 8 日上午 9:57:50 小时:6.27777777777778E-05 分钟:0.00376666666666667 秒:0.226 毫秒:226 处理订单客户:10 | 发货:次日 | 总价:250 | 运费:10 产品编号:1 | 数量:5 | 价格:50 产品编号:2 | 数量:10 | 价格:200

它似乎是异步的,但实际上只有一个线程在运行我的工作流程(不是主应用程序线程)。但从输出中我只看到一个线程正在运行我的工作流程。如何让 10 个线程同时运行工作流?谢谢!

0 投票
1 回答
314 浏览

.net - 我可以修改将 BeginInvoke 我的委托的线程的性质吗?

我正在实现一个具有BeginSomething()EndSomething()对的接口,并且我的实现在一个方法中Execute()

所以我创建了一个Action action = Execute,并action.BeginInvoke在 BeginSomething 和action.EndInvokeEndSomething 中调用。但是,我的 Execute 方法必须由其单元状态为 STA(单线程单元)的线程调用。通常这是通过调用来完成的Thread.SetApartmentState,但在这种情况下,我不知道哪个线程将调用我的方法。

我应该如何使调用线程成为 STA?

0 投票
1 回答
1870 浏览

.net - 什么时候应该使用 UdpClient.BeginReceive?我什么时候应该在后台线程上使用 UdpClient.Receive?

本质上,这些之间的区别是什么?我什么时候应该使用哪种形式?

相对