问题标签 [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.
c# - BeginInvoke 的@object 参数应该传递什么?
我有一个事件委托,定义如下:
我异步引发事件:
随后,签名BeginInvoke
看起来像:
在我见过BeginInvoke
的大多数示例中,调用@object
参数是null
,但我找不到解释该参数用途的文档。
那么该参数的目的是什么?我们可以用它做什么?
c# - Dispatcher.BeginInvoke:无法将 lambda 转换为 System.Delegate
我试着打电话System.Windows.Threading.Dispatcher.BeginInvoke
。该方法的签名是这样的:
我正在尝试将 Lambda 传递给它,而不必创建一个委托。
它给了我一个编译器错误,说我
无法将 lambda 转换为 System.Delegate。
委托的签名将对象作为参数并返回 void。我的 lambda 与此匹配,但它不起作用。我错过了什么?
c# - 等到一个委托被调用
我有一个带有方法的异步类,当它完成处理时StartProcessing()
会引发一个事件。花费很少的时间。int ResultReady()
StartProcessing()
我想同步调用这个类。我的伪代码应该是这样的:
调用 StartProcessing()
等待/睡眠,直到结果准备好
返回结果
什么设计模式最适合这个?你能指点我一个代码示例吗?
c# - 关于 AsyncCallback 和 IAsyncResult 模式的两个问题
关于 AsyncCallback 和 IAsyncResult 的回调模式的两个问题。
我用一个代码示例改变了这个问题:
开始编辑
我开始看到发生了什么。我混合了 WCF 异步模式和普通异步模式。在 WCF 中,使用代理并且 Begin- 和 EndMethod 必须通过代理而不是函数委托。在 WCF 的情况下,铸造工作,在正常情况下不是。WCF 使用 [OperationContract(AsyncPattern = true)] 属性可能是为了强制执行一些不同的模式。结束编辑
为什么出错就行了return (string)(result.AsyncState);
?
生产代码中完全相同的模式是可以的。
其次,为什么不能在Test类的BeginMethod中调试代码?
我只能打破 WorkerFunction。
c# - BeginInvoke 不传递数据但使用 Invoke 导致异常
我有一个在网格视图中显示数据的 Windows 窗体应用程序。数据正在从后台工作线程自动刷新(从数据库中获取)。因此,为了避免任何跨线程引用,在后台线程的 DoWork 方法中,我调用 GridView.BeginInvoke() 并传递消息列表。但是在委托方法中,消息列表是空的。
如果我使用 GridView.invoke(),messageList 确实包含这些值,但有时会出现一个异常,提示“对象当前正在其他地方使用”,我认为这是由于在非 UI 线程上引用 UI 控件引起的。
我怎么解决这个问题?
c# - GUI 对象何时需要调用?
使用 C# Windows.Forms,Invalidate()、Refresh() 等方法是否必须在主/GUI 线程上运行(需要 Invoke/BeginInvoke)?如何更改 GUI 对象的成员,例如添加/删除点或更改 Charting.Chart 对象中系列的颜色?
我在工作线程中发生了其中一些更改而没有任何问题(所以我猜它们没问题?),但我试图区分 GUI 线程上明确需要哪些更改以及哪些更改可以在对象上发生工作线程。有没有人有关于这个主题的指导的链接或书籍参考?
c# - BeginInvoke() 是否运行单独的线程?
在我的 WPF 应用程序中,我想在非 UI 线程中做一些工作,以避免 UI 变得无响应。为此,我这样做了:
委托被定义为,
我的问题是:
是否BeginInvoke()
创建一个新线程并在其中SetPatternType
运行回调?如果是这样,这个线程会持续多久?
这种方法一般好吗?如果不是,它有什么问题?我可能面临哪些潜在问题?
我正在使用 C# 4.0 和 Visual Studio 2010。
编辑:
我也需要一些关于这些的指导方针:
我什么时候应该自己创建一个新线程,什么时候应该使用BeginInvoke()
?我什么时候应该使用DispatcherObject.Dispatcher.BeginInvoke()
对象?
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 个线程同时运行工作流?谢谢!
.net - 我可以修改将 BeginInvoke 我的委托的线程的性质吗?
我正在实现一个具有BeginSomething()
和EndSomething()
对的接口,并且我的实现在一个方法中Execute()
所以我创建了一个Action action = Execute
,并action.BeginInvoke
在 BeginSomething 和action.EndInvoke
EndSomething 中调用。但是,我的 Execute 方法必须由其单元状态为 STA(单线程单元)的线程调用。通常这是通过调用来完成的Thread.SetApartmentState
,但在这种情况下,我不知道哪个线程将调用我的方法。
我应该如何使调用线程成为 STA?
.net - 什么时候应该使用 UdpClient.BeginReceive?我什么时候应该在后台线程上使用 UdpClient.Receive?
本质上,这些之间的区别是什么?我什么时候应该使用哪种形式?
相对