草庐IT

invoke_result

全部标签

c# - 不考虑 InvokeRequired 调用 Invoke 有什么问题?

我见过跨线程访问GUI控件的常见设置,例如此处讨论的:Shortestwaytowriteathread-safeaccessmethodtoawindowsformscontrol我发现的所有网络点击都描述了类似的事情。但是,为什么我们需要检查InvokeRequired?我们不能直接调用Invoke吗?我认为答案是否定的,所以我真正的问题是“为什么”? 最佳答案 从非UI线程我们无法触及UI-可能会发生非常糟糕的事情,因为控件具有线程关联性。因此,我们必须(至少)从非UI线程调用Invoke或BeginInvoke。然而,对于U

c# - await Task<T> 和 Task<T>.Result 有什么区别?

publicasyncTaskGetName(intid){TasknameTask=Task.Factory.StartNew(()=>string.Format("Namematchingid{0}=Developer",id));returnnameTask.Result;}在上面的方法返回语句中,我使用了Task.Result属性(property)。publicasyncTaskGetName(intid){TasknameTask=Task.Factory.StartNew(()=>string.Format("Namematchingid{0}=Developer",id

c# - C#调用BeginInvoke/Invoke时如何获取返回值

我有这个应该是线程安全的小方法。一切正常,直到我希望它具有返回值而不是无效。调用BeginInvoke时如何获取返回值?publicstaticstringreadControlText(ControlvarControl){if(varControl.InvokeRequired){varControl.BeginInvoke(newMethodInvoker(()=>readControlText(varControl)));}else{stringvarText=varControl.Text;returnvarText;}}编辑:我猜想在这种情况下拥有BeginInvoke并不

c# - 用什么? Tao、SharpGL、OpenTK、DirectX P/Invoke、XNA、MDX、SlimDX、Windows API 编解码器包

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion在过去,这很容易;你制作了自己的3D东西,然后是DirectX,然后是OpenGL。对于.Net开发人员来说,MDX很不错。然后XNA接管了MDX,但它不一样。XNA似乎非常以游戏为中心,具有固定模型和内容的所有内容流水线和预加载。那么我们现在处于什么位置?经过几天的研究/试验和错误后,我觉得到处都能找到开发一半的库、有开销的库、严重的限制或过于复杂的库。我想做“徒手”3D的东西。例如在3

c# - Func<T>() 与 Func<T>.Invoke()

我很好奇调用Func之间的区别直接与使用Invoke()在上面。有区别吗?是第一个语法糖并调用Invoke()还是在下面?publicTDoWork(Funcmethod){return(T)method.Invoke();}对比publicTDoWork(Funcmethod){return(T)method();}还是我完全走错了路? 最佳答案 完全没有区别。第二个只是编译器提供的Invoke的简写。它们编译为相同的IL。 关于c#-Func()与Func.Invoke(),我们在S

c# - 什么会导致 P/Invoke 参数在传递时乱序?

这是一个专门发生在ARM上的问题,而不是x86或x64。我有一个用户报告了这个问题,并且能够通过WindowsIoT在RaspberryPi2上使用UWP重现它。我以前见过这种调用约定不匹配的问题,但我在P/Invoke声明中指定了Cdecl,我尝试在native端显式添加__cdecl并得到相同的结果。这是一些信息:P/调用声明(reference):[DllImport(Constants.DllName,CallingConvention=CallingConvention.Cdecl)]publicstaticexternFLSliceResultFLEncoder_Finis

c# - 'await' 有效,但调用 task.Result 挂起/死锁

我有以下四个测试,最后一个在我运行时挂起。为什么会这样:[Test]publicvoidCheckOnceResultTest(){Assert.IsTrue(CheckStatus().Result);}[Test]publicasyncvoidCheckOnceAwaitTest(){Assert.IsTrue(awaitCheckStatus());}[Test]publicasyncvoidCheckStatusTwiceAwaitTest(){Assert.IsTrue(awaitCheckStatus());Assert.IsTrue(awaitCheckStatus())

c# - ReSharper/C# 中的 "Delegate subtraction has unpredictable result"?

当使用myDelegate-=eventHandlerReSharper(版本6)问题时:Delegatesubtractionhasunpredictableresult这背后的理性是explainedbyJetBrainshere.这个解释很有道理,在阅读之后,我怀疑我对委托(delegate)的所有使用-。那么,我可以编写一个非自动事件而不让ReSharper脾气暴躁吗?或者,是否有更好和/或“正确”的方法来实现它?或者,我可以忽略ReSharper吗?这里是简化的代码:publicdelegatevoidMyHandler(objectsender);MyHandler_myE

c# - Invoke调用中的匿名方法

我们想在Control.Invoke中匿名调用委托(delegate)的语法有点问题。我们尝试了多种不同的方法,但都无济于事。例如:myControl.Invoke(delegate(){MyMethod(this,newMyEventArgs(someParameter));});其中someParameter是该方法的局部参数以上会导致编译错误:Cannotconvertanonymousmethodtotype'System.Delegate'becauseitisnotadelegatetype 最佳答案 因为Invoke/

C# 浮点表达式 : strange behavior when casting the result float to int

我有以下简单代码:intspeed1=(int)(6.2f*10);floattmp=6.2f*10;intspeed2=(int)tmp;speed1和speed2应该有相同的值,但事实上,我有:speed1=61speed2=62我知道我应该使用Math.Round而不是转换,但我想了解为什么值不同。我查看了生成的字节码,但除了存储和加载之外,操作码是相同的。我也在java中尝试了相同的代码,我正确地获得了62和62。谁能解释一下?编辑:在真正的代码中,它不是直接6.2f*10而是一个函数调用*一个常量。我有以下字节码:对于speed1:IL_01b3:ldloc.sV_8IL_0