草庐IT

invoke-kind

全部标签

c# - 生成 P/Invoke 代码的最简单方法?

我是一名经验丰富的.Net程序员,但我一生中没有编写过C/C++程序。现在我有了这个C-dll、header和文档(第3方,不是来自WinAPI),我需要从中调用大约十种方法。我正在考虑使用PlatformInvoke。我找到了这三个可以为我创建代码的工具:PInvoker:http://www.pinvoker.comP/调用互操作助手:http://www.codeplex.com/clrinteropP/调用向导:http://www.paulyao.com/res/pinvoke/pinvoke.aspx可能痛饮:http://www.swig.org/Pinvoker的方法似

c# - Parallel.Invoke 不等待异步方法完成

我有一个应用程序可以从不同来源提取大量数据。本地数据库、网络数据库和Web查询。这些中的任何一个都可能需要几秒钟才能完成。所以,首先我决定并行运行它们:Parallel.Invoke(()=>dataX=loadX(),()=>dataY=loadY(),()=>dataZ=loadZ());正如预期的那样,所有三个并行执行,但整个block的执行直到最后一个完成后才会返回。接下来,我决定向应用程序添加一个微调器或“忙碌指示器”。我不想阻塞UI线程,否则微调器不会旋转。所以这些需要在async模式下运行。但是,如果我在async模式下运行所有​​这三个,那么它们实际上会“同步”发生,只

c# - WPF Dispatcher.Invoke 'hanging'

我有一个有点复杂的WPF应用程序,当尝试使用调度程序调用UI线程时,它似乎“挂起”或卡在Wait调用中。一般流程是:处理按钮的点击事件创建一个新线程(STA),它:创建演示者和UI的新实例,然后调用方法Disconnect断开连接然后在UI上设置一个名为Name的属性Name的setter然后使用以下代码设置属性:if(this.Dispatcher.Thread!=Thread.CurrentThread){this.Dispatcher.Invoke(DispatcherPriority.Normal,(ThreadStart)delegate{this.Name=value;//

c# - 单元测试错误 : This function can only be invoked from LINQ to Entities

我正在编写一个MVC5互联网应用程序,我的表达式如下:publicExpression>IsExpiresDateTimeLessThanMinimumDaysLeftInFreeTrialSubscription(intminimumDaysLeftInSubscriptionForEmail){returnAccount=>System.Data.Entity.DbFunctions.DiffHours(Account.freeTrialEndDate,DateTime.UtcNow)从数据库中检索数据时,上述表达式正确完成。但是,在编写使用上述表达式的单元测试时,出现以下错误:T

c# - 理解 Expression.Invoke() 方法

我一直在理解PredicateBuilderJosephAlbahari编写的扩展方法,我看到了这个Expression.Invoke老实说,我无法通过以下方法理解它的原因:publicstaticExpression>Or(thisExpression>expr1,Expression>expr2){varinvokedExpr=Expression.Invoke(expr2,expr1.Parameters.Cast());returnExpression.Lambda>(Expression.OrElse(expr1.Body,invokedExpr),expr1.Paramet

c# - 如何使用反射为对象的所有 DateTime 属性设置 DateTime.Kind

在我的应用程序中,我通过网络服务检索域对象。在Web服务数据中,我知道所有日期值都是UTC,但是Web服务没有格式化它的xs:dateTime。值作为UTC日期。(换句话说,字母Z未附加到每个日期的末尾以指示UTC。)此时我无法更改Web服务的行为方式,但作为变通方法,我创建了一个方法,在反序列化来自Web服务的对象后立即调用该方法。privatevoidExplicitlyMarkDateTimesAsUtc(Tobj)whereT:class{Typet=obj.GetType();//Loopthroughtheproperties.PropertyInfo[]props=t.G

c# - Invoke Method (Delegate) 和直接调用有什么区别?

这个问题在这里已经有了答案:DifferencebetweenDelegate.InvokeandDelegate()(4个答案)关闭9年前。可能是之前有人问过这个问题,我用谷歌搜索但没有得到答案。委托(delegate)原型(prototype)delegatevoidmethod1(stringstr);添加回调方法method1objDel2;objDel2=newmethod1(TestMethod1);objDel2("test");objDel2.Invoke("Invoke");在上面的代码中,objDel2("test");和objDel2.Invoke("Invoke

c# - 如何在 C# (.NET) 中将 DateTimeKind.Unspecified 类型的 DateTime 转换为 DateTime.Kind.Utc

我继承了C#代码,其中包含大量DateTimes,其中Kind属性为DateTimeKind.Unspecified。这些被送入Datetime.ToUniversalTime()返回一个UTC日期时间(在我的例子中它增加了7小时)。这就是ToUniversalTime()的工作原理;请参阅MSDN。问题是这些日期时间实际上已经是UTC时间了。它们是从SQLServerCompact4.0数据库中提取出来的。它们以UTC存储在那里。我的主要问题是:如何修改DateTime的Kind属性以使其为UTC而不是未指定的?我不想更改时间或日期。因此,例如,日期2013年4月1日上午9:05,其

c# - Task.WaitAll 方法与 Parallel.Invoke 方法

我有示例代码来比较并行方法和任务方法的处理时间。本实验的目的是了解它们的工作原理。所以我的问题是:为什么Parallel比Task工作得更快?我的结果是否意味着我应该使用Parallel而不是Task?我应该在哪里使用Task和Parallel?与并行相比,使用任务有什么好处?Task是否只是ThreadPool.QueueUserWorkItem方法的包装?publicTaskSomeLongOperation(){returnTask.Delay(3000);}staticvoidMain(string[]args){Programp=newProgram();Listtasks=

c# - Action(arg) 和 Action.Invoke(arg) 之间的区别

staticvoidMain(){ActionmyAction=SomeMethod;myAction("HelloWorld");myAction.Invoke("HelloWorld");}staticvoidSomeMethod(stringsomeString){Console.WriteLine(someString);}上面的输出是:HelloWorldHelloWorld现在我的问题是这两种调用Action的方式有什么区别(如果有)?一个比另一个好吗?什么时候用哪个?谢谢 最佳答案 所有委托(delegate)类型都有