草庐IT

event-dispatch-thread

全部标签

c# - WPF Dispatcher 的 InvokeAsync 和 BeginInvoke 有什么区别

我注意到在.NET4.5中WPFDispatcher已经获得了一组新方法来在名为InvokeAsync的Dispatcher线程上执行内容.之前,.NET4.5我们有Invoke和BeginInvoke分别以同步和异步方式处理。除了命名和可用的重载略有不同之外,BeginInvoke和InvokeAsync方法之间是否存在任何重大差异?哦,我已经检查过了,两者都可以awaited:privateasyncTaskRunStuffOnUiThread(Actionaction){//bothoftheseworksfineawaitdispatcher.BeginInvoke(actio

c# - 为什么我会看到多条 "The thread 0x22c8 has exited with code 259 (0x103)."消息

我在我的Winforms应用程序中收到了大量这些消息,尽管我从未明确创建任何线程。为什么会这样?我四处寻找解释,但很难用这样的方式来表达询问。我使用的是VisualStudios2013,这是我关心的调试输出:Thethread0x23a4hasexitedwithcode259(0x103).Thethread0x2884hasexitedwithcode259(0x103).Thethread0x27echasexitedwithcode259(0x103).Thethread0x1978hasexitedwithcode259(0x103).Thethread0x1534hase

c# - 为什么我会看到多条 "The thread 0x22c8 has exited with code 259 (0x103)."消息

我在我的Winforms应用程序中收到了大量这些消息,尽管我从未明确创建任何线程。为什么会这样?我四处寻找解释,但很难用这样的方式来表达询问。我使用的是VisualStudios2013,这是我关心的调试输出:Thethread0x23a4hasexitedwithcode259(0x103).Thethread0x2884hasexitedwithcode259(0x103).Thethread0x27echasexitedwithcode259(0x103).Thethread0x1978hasexitedwithcode259(0x103).Thethread0x1534hase

c# - 调试期间的 Visual Studio : The function evaluation requires all threads to run

我在调试时突然遇到一个奇怪的错误。到目前为止,监window口中的变量已正确显示。现在我总是在监window口中收到此错误消息:Thefunctionevaluationrequiresallthreadstorun我无法再检查任何变量。我没有明确地使用线程。我该怎么做才能让它重新工作?如某些论坛所述,我已经在调试器的选项窗口中禁用了功能:“启用属性评估和其他隐式函数调用”。但是没有成功,它给了我这个错误:ErrorImplicitFunctionevaluationdisabledbytheuser 最佳答案 来自msdn论坛:T

c# - 调试期间的 Visual Studio : The function evaluation requires all threads to run

我在调试时突然遇到一个奇怪的错误。到目前为止,监window口中的变量已正确显示。现在我总是在监window口中收到此错误消息:Thefunctionevaluationrequiresallthreadstorun我无法再检查任何变量。我没有明确地使用线程。我该怎么做才能让它重新工作?如某些论坛所述,我已经在调试器的选项窗口中禁用了功能:“启用属性评估和其他隐式函数调用”。但是没有成功,它给了我这个错误:ErrorImplicitFunctionevaluationdisabledbytheuser 最佳答案 来自msdn论坛:T

c# - 使用 Dispatcher.Invoke 从非主线程更改 WPF 控件

我最近开始使用WPF编程并遇到了以下问题。我不明白如何使用Dispatcher.Invoke()方法。我在线程方面有经验,我制作了一些简单的Windows窗体程序,我只是在其中使用了Control.CheckForIllegalCrossThreadCalls=false;是的,我知道这很蹩脚,但这些都是简单的监控应用程序。事实是现在我正在制作一个在后台检索数据的WPF应用程序,我启动一个新线程来调用检索数据(从网络服务器),现在我想在我的WPF表单上显示它.问题是,我无法从此线程设置任何控件。甚至没有标签或任何东西。如何解决?回复评论:@Jalfp:所以当我获取数据时,我在“新模式”

c# - 使用 Dispatcher.Invoke 从非主线程更改 WPF 控件

我最近开始使用WPF编程并遇到了以下问题。我不明白如何使用Dispatcher.Invoke()方法。我在线程方面有经验,我制作了一些简单的Windows窗体程序,我只是在其中使用了Control.CheckForIllegalCrossThreadCalls=false;是的,我知道这很蹩脚,但这些都是简单的监控应用程序。事实是现在我正在制作一个在后台检索数据的WPF应用程序,我启动一个新线程来调用检索数据(从网络服务器),现在我想在我的WPF表单上显示它.问题是,我无法从此线程设置任何控件。甚至没有标签或任何东西。如何解决?回复评论:@Jalfp:所以当我获取数据时,我在“新模式”

C# : What if a static method is called from multiple threads?

在我的应用程序中,我有一个同时从多个线程调用的静态方法。我的数据有混淆的危险吗?在我的第一次尝试中,该方法不是静态的,我正在创建该类的多个实例。在那种情况下,我的数据以某种方式混淆了。我不确定这是怎么发生的,因为它只是有时发生。我还在调试。但是现在该方法是静态的,到目前为止我没有任何问题。也许这只是运气。我不确定。 最佳答案 在方法内部声明的变量(“捕获”变量可能除外)是隔离的,因此您不会遇到任何固有问题;但是,如果您的静态方法访问任何共享状态,则所有赌注均无效。共享状态的例子是:静态字段从公共(public)缓存访问的对象(非序列

C# : What if a static method is called from multiple threads?

在我的应用程序中,我有一个同时从多个线程调用的静态方法。我的数据有混淆的危险吗?在我的第一次尝试中,该方法不是静态的,我正在创建该类的多个实例。在那种情况下,我的数据以某种方式混淆了。我不确定这是怎么发生的,因为它只是有时发生。我还在调试。但是现在该方法是静态的,到目前为止我没有任何问题。也许这只是运气。我不确定。 最佳答案 在方法内部声明的变量(“捕获”变量可能除外)是隔离的,因此您不会遇到任何固有问题;但是,如果您的静态方法访问任何共享状态,则所有赌注均无效。共享状态的例子是:静态字段从公共(public)缓存访问的对象(非序列

c# - 创建线程 - Task.Factory.StartNew 与 new Thread()

我刚刚了解.Net4中新的线程和并行库过去我会像这样创建一个新线程(作为示例):DataInThread=newThread(newThreadStart(ThreadProcedure));DataInThread.IsBackground=true;DataInThread.Start();现在我可以:Taskt=Task.Factory.StartNew(()=>{ThreadProcedure();});有什么区别?谢谢 最佳答案 区别很大。任务在ThreadPool上安排,如果合适,甚至可以同步执行。如果您有长时间运行的后