草庐IT

thread_func

全部标签

c# - 为什么 Func<T> 与 Func<IEnumerable<T>> 不明确?

这个让我感到困惑,所以我想我会在这里问,希望C#专家能向我解释。为什么这段代码会产生错误?classProgram{staticvoidMain(string[]args){Foo(X);//theerrorisonthisline}staticStringX(){return"Test";}staticvoidFoo(Func>x){}staticvoidFoo(Funcx){}}有问题的错误:Error1Thecallisambiguousbetweenthefollowingmethodsorproperties:'ConsoleApplication1.Program.Foo(

c# - 替代嵌套类型的类型 Expression<Func<T>>

我在调用服务时使用了一个函数。在调用服务之前,它会创建一个日志条目:protectedTResultCallService(TServiceservice,Expression>functionSelector){Logger.LogServiceCall(service,functionSelector);returnfunctionSelector.Compile()(service);}VisualStudio2010代码分析器通知我不应在以下消息中使用嵌套类型:CA1006:Microsoft.Design:Consideradesignwhere'ServiceManager

c# - 这个 thread.abort() 正常安全吗?

我创建了一个自定义自动完成控件,当用户按下某个键时,它会在另一个线程上查询数据库服务器(使用远程处理)。当用户打字速度非常快时,程序必须取消之前执行的请求/线程。我之前先将它实现为AsyncCallback,但我发现它很麻烦,要遵循太多内部规则(例如AsyncResult、AsyncState、EndInvoke),而且你必须检测BeginInvoke对象的线程,因此你可以终止先前执行的线程。此外,如果我继续AsyncCallback,则那些AsyncCallbacks上没有可以正确终止先前执行的线程的方法。EndInvoke不能终止线程,它仍然会完成被终止线程的操作。我最终还是会在线

c# - 您可以命名 Func<T> 类型的参数吗?

我有一个这样定义的“调度图”:privateDictionary,string>>_messageProcessing;这使我可以根据DynamicEntity实例的名称轻松分派(dispatch)到不同的方法。为了避免被所有维护代码的人永远讨厌,有没有什么方法可以命名Func中的参数以提供一些DynamicEntity是哪个的线索? 最佳答案 您不能使用内置的Func类型来完成它,但是创建您自己的自定义委托(delegate)类型并以类似的方式使用它很容易:_messageProcessing.Add("input",(x,y,z

c# - 简而言之,关于 Func<> 可以说些什么

我已经使用Func一段时间了,而且我已经设法避免使用它(暂时)。可是,现在看来,我是躲不掉了。例如,我尝试了DynamicLinq,但几乎所有内容都是根据Func进行的。我试过我的一本书(C#2008/Deitel&Deitel)和MSDN,但我还没有得到它。他们都直接跳入主题。关于Func可以说些什么(几句话)我能否在网络上找到一些可以帮助我着手处理此事的链接?感谢帮助 最佳答案 Func是一个通用委托(delegate)-使用起来非常方便,因为您不必为每个参数/返回类型组合创建自己的委托(delegate)。之前,您必须编写如下

c# - System.Threading.Timer 一段时间后没有触发

我有一个Windows服务应用程序。并通过在控制台模式下运行来调试它。在这里http://support.microsoft.com/kb/842793据说Timers.Timer有一个错误并且不会在Windows服务中触发。解决方法是使用Threading.Timer并且本文适用于.NET1.0和1.1我正在使用.NET4,但一段时间后Threading.Timer也没有触发。那么这可能是什么原因呢?作为解决方法,您有什么建议?谢谢,最好的问候编辑:我将计时器从Threading.Timer更改为Timers.Timer,它可以正常工作。 最佳答案

c# - 将字符串解析为 C# lambda Func

有没有办法将lambda的字符串表示形式转换为lambdaFunc?Funcfunc=Parse("product=>product.Name.Length>0");我尝试了DynamicLINQ但它没有按预期工作-例如它不期望lambda语法=>。答案总结:编写我自己的C#编译器-非常有趣启动外部编译器(如csc.exe)——非常慢使用DLINQ-正如我所说,我不明白它如何解析lambda表达式为什么我需要这个:因为没有办法将lambda传递给像这样的自定义属性[Secure(role=>role.CanDoThis&&role.AllowedCount>5)]作为一种解决方法,我想

c# - ASP.NET 异常 "Thread was being aborted"导致方法退出

在下面的代码中,有时someFunctionCall()会产生异常:Threadwasbeingaborted.为什么代码块B中的代码永远不会运行?ASP.NET是否为每个方法调用启动一个新线程?我惊讶地发现,当发生此异常时,BlockB中的代码从未运行,方法返回,而我的应用程序继续运行。有人可以解释一下吗?publicvoidmethod(){//CODEBLOCKA//...try{someFunctionCall();//thiscallisgeneratingthreadabortexception}catch(Exceptionex){//logexceptionmessag

c# - Thread.Abort 与 Thread.Interrupt

如果我需要取消线程上的一些操作,我应该什么时候使用Thread.AbortvsThread.Interrupt。我阅读了有关它的文档,但不确定我应该使用哪个scneario在两者之间进行特定调用。如果有任何第三种方法,请让我也知道它的优缺点。 最佳答案 我会不惜一切代价避免使用Thread.Abort。自.NET2.0以来,它的行为更加安全和可预测,但它仍然存在一些非常严重的缺陷。托管代码中的大多数中止都可以安全处理,但不是全部。例如,如果在静态构造函数的处理过程中触发了中止请求,我认为会有一些微妙的问题。没关系,事实上,带外异常随

c# - 委托(delegate)与行动,C# 中的 Func

这个问题在这里已经有了答案:CreatingdelegatesmanuallyvsusingAction/Funcdelegates(8个答案)关闭8年前。这似乎是一个愚蠢的问题,但这只是出于好奇。我们在C#中有两个特定的已定义委托(delegate):ActionFuncAction封装任何接受0个或多个参数的“void”方法。Func封装了返回特定值类型并接受0个或多个参数的任何方法。我的问题是:在什么情况下建议定义自定义委托(delegate)?你为什么需要这样做?提前致谢