Tag: c# 4.0

如何在系统启动时运行控制台应用程序,而不显示它(后台进程)?

我想在系统启动时运行一个控制台应用程序而不在显示屏上显示它意味着我想运行一个应用程序作为后台进程。如何做到这一点?

动态IL方法导致“操作可能破坏运行时的稳定性”

System.Security.VerificationException:操作可能会破坏运行时的稳定性。 在Connance.CommunicatorApi.ReportApiClient.AcknowledgeRecallsAsyncDynamicHandler(Object,AcknowledgeRecallsCompletedEventArgs) 那是我得到的错误。 我正在尝试做的(背景)是为一类方法创建一个全局事件处理程序。 我正在使用WCF中的静态代理,我需要创建一个跟踪所有调用并返回所有WCF Web方法的层。 不幸的是,WCF强烈地键入了“已完成”事件的EventArgs,几乎不可能。 我决定尝试一下。 如果事件是EventHandler ,我仍然可以注册签名void Method(object, object)来处理事件。 大。 所以我开始创建一个DynamicMethod ,它将调用我的全局处理程序,并将其注册到每个事件。 我试过两种方法: 1)DynamicMethod的类型为void(对象,对象) 2)类型为void(object,SomeSpecificEventArgs) – 我使用generics方法来获取类型。 只有当我尝试手动或为事件调用方法时,我才得到上述exception。 这是我的代码: // The handler for all callbacks. // in the example it does nothing. public void Handler(object sender, object e) { dynamic evtArgs = e; object userState = evtArgs.UserState; } private string GetIdentifier(Delegate d) […]

什么是嵌套方法调用和委托之间的区别?

考虑以下: 第一种方法: public void f3() { f2(); f1(); } 还有这个 … 第二种方法: class Sample { public delegate void MyDelegate(string s); MyDelegate obj; public Sample() { obj += new MyDelegate(input); obj+=new MyDelegate(something); obj += new MyDelegate(someStaticMethod); } } 当我调用f3()时,它将调用其中列出的函数…当我将调用委托时会发生同样的情况…所以当我可以使用第一种方法时,是否使用委托来处理某些事件… 方法也封装了方法调用..

如何在给定负载(%CPU利用率)下运行CPU?

是否可以冻结Windows任务管理器中显示的CPU使用率? 我想从我的程序中将负载冻结为20%,50%,70%等特定值。 (这是为了分析PC在CPU使用方面消耗的功率。) 这可能吗?

我可以在没有Visual Studio 2010的情况下下载C#4.0的编译器吗?

我知道CTP VS 2010图像,但我可以只下载.NET Framework 4.0和C#编译器吗?

应该在C#中清空“if”语句导致错误或警告?

让我从现实生活中的例子开始: 客户:Alex,刚刚在第138行的RemovalProcessor中发现了一些奇怪的事情: if (Session.Handler.ExecutePrefetchTasks()==null); Session.ExecuteDelayedQueries(); 那个’if’后面的半圆是否应该在那里? 我:哎呀……我会把它发给我们的家伙来检查,但最有可能的是,你是对的。 虽然案件很少见,但我承认几乎所有大项目都有类似的问题。 我知道C#中的分号(和语句块)使用规则不能改变(我个人更喜欢Python风格)。 但我认为用if语句准确识别这种情况是个好主意,并将其归类为错误或警告。 很少有Q / AI考虑到: 为什么在这种情况下应该生成警告或错误? 因为这是开发人员的错误可能是99%的概率。 为什么在这种情况下错误更可取? 在许多情况下,开发人员会忽略警告。 我明白这是他们自己的问题,并且有/ warnaserror(威胁警告为错误)切换,但由于这是一个非常高概率的错误,并且,如果它不是错误(真的?;)),它是相当的很容易解决这个问题,可能最好将此案例归类为错误。 最后,在这种情况下的错误不会“限制”开发人员,因为这样的代码可以(并且可能必须)总是在没有if语句的情况下重写。 为什么警告在这种情况下更可取? 这不会破坏兼容性; 我还怀疑一些代码生成器可能会依赖于当前行为生成代码。 所以我很高兴听到你对此的看法。

for循环的优化

嗨,大家好我正在写一些目前应该尽可能快地运行的c#代码,通常占用100%的单个核心大约25分钟。 我需要代码保持单核心,因为跨多个核心运行此代码的好处不会像同时多次运行此项目一样好 有问题的代码如下 public Double UpdateStuff(){ ClassA[] CAArray = ClassA[*a very large number indeed*]; Double Value = 0; int length = CAArray.Length; for (int i= 0; i< length ; i++) { Value += CAArray[i].ClassB.Value * CAArray[i].Multiplier; } return Value; } 根据分析器,代码的这个区域负责应用程序的78%的负载,因此似乎是优化的良好候选者。 !!!注意:该函数已从返回类型void更改为返回类型Double,这是伪代码而不是实际代码,以便于阅读 澄清:.net,c#4.0,visual studio 2010,目标机器:windows server 2008 x64 编辑:进一步澄清:此上下文中的所有变量都是公共的而不是属性。 CAArray [i] .ClassB.Value中的值将永远改变不能匹配的双精度数。

VB.NET下的后期绑定魔术转换为C#

我应该将一些代码从VB转换为C#。 给出以下几行VB工作(我认为只是因为选项未设置为严格): Dim someProp As SomeType Try someProp = CType(SomeInstance, Object).SomeProp ‘ … 由于后期绑定,这个代码在VB下是可能的。 当然,以下内容不适用于C#: SomeType someProp; try { someProp = ((object)SomeInstance).SomeProp; // … 我怎么能在C#下制定类似的东西? 任何tipps sl3dg3的thx

奇数方法行为 – 函数的ToString

请考虑以下代码段: class Program { static void Main(string[] args) { Console.WriteLine(Test().ToString()); } static IEnumerable Test() { foreach (var ch in “test”) yield return ch; } static IEnumerable TestOk() { return “test”; } } Test().ToString()返回“ConsoleApplication1.Program + d__0”而不是预期的“test”。 Test()方法甚至没有执行 – 只返回它的名字! 第二种方法TestOk()工作得很好。 到底是怎么回事?

ObservableCollection CollectionChanged事件

我有一个可观察的集合,我有一个collectionChanged事件。 我将其项绑定到UI中的列表框。 当用户从列表框中删除UI中的某些项目时,CollectioChanged会被正确触发,但是,我需要知道已删除的项目的索引。 问题是我在更改后无法对集合进行indexOf,因为它不再具有已删除的项目.. 我们可以访问从collectionschanged事件中从ObservableCollection中删除的索引列表吗?