草庐IT

完成率

全部标签

c# - 当所有后台线程池线程完成时得到通知

当我使用ThreadPool启动3..10个线程时,我有一个场景。每个线程完成其工作并返回到线程池。当所有后台线程都完成时,在主线程中通知的可能选项有哪些?目前,我正在使用自己开发的方法,为每个创建的线程递增一个变量,并在后台线程即将结束时递减它。这工作得很好,但我很好奇是否有更好的选择。 最佳答案 除非使用Interlocked.Decrement完成,否则(在线程之间)递减一个变量有点冒险,但如果你有最后一个线程(即当它变为零时)raise,这种方法应该没问题一个事件。请注意,它必须位于“finally”block中,以避免在异

c# - 如何在 C# 中运行多个任务并在完成这些任务时获取事件?

我正在重新运行Task完成后。下面是我在应用程序的Application_Start中调用的函数。privatevoidRun(){Taskt=newTask(()=>newXyzServices().ProcessXyz());t.Start();t.ContinueWith((x)=>{Thread.Sleep(ConfigReader.CronReRunTimeInSeconds);Run();});}我想运行多个任务,这些任务将从web.config应用程序设置中读取。我正在尝试这样的事情,privatevoidRun(){Listtasks=newList();for(int

c# - PrintDocument.Print 导致 Win32Exception 操作成功完成

我正在尝试在C#.NET3.5应用程序中打印到网络打印机并出现此异常:Theoperationcompletedsuccessfully是什么原因造成的,如何解决?System.ComponentModel.Win32Exception:TheoperationcompletedsuccessfullyatSystem.Drawing.Printing.PrinterSettings.GetHdevmodeInternal()atSystem.Drawing.Printing.PrinterSettings.GetHdevmode(PageSettingspageSettings)at

c# - 即使在方法完成后线程如何访问局部变量?

假设我有一个这样的C#方法publicvoidMyMethod(){inti=0;varthread=newThread(()=>{Thread.Sleep(100);if(i==0){Console.WriteLine("Valuenotchangedandis{0}",i);}else{Console.WriteLine("Valuechangedto{0}.",i);}});thread.Start();i=1;}这里的方法创建了一个线程,该线程访问在方法中创建的局部变量。当它访问这个变量时,方法已经完成,因此局部变量i不应该存在。但是代码运行没有任何问题。根据我的理解,局部变量

c# - 在 C# 中等待命令完成

我是C#的新手,正在尝试开发一个在内部打开命令提示符并在此处执行一些命令的小型应用程序。这是我到目前为止所做的:m_command=newProcess();m_command.StartInfo.FileName=@"cmd.exe";m_command.StartInfo.UseShellExecute=false;m_command.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;m_command.StartInfo.CreateNoWindow=true;m_command.StartInfo.RedirectStandardI

c# - 在 winform TextBox 中自动完成 [包含而不是开始]

//[indesigner]textBoxInContext.AutoCompleteMode=Suggest//[indesigner]textBoxInContext.AutoCompleteSource=CustomSourceAutoCompleteStringCollectionautoComplete=newAutoCompleteStringCollection();autoComplete.AddRange(myArrayofStrings);textBoxInContext.AutoCompleteCustomSource=autoComplete;我有这段代码,它在

c# - UserManager 错误 - 在上一个异步操作完成之前在此上下文中启动了第二个操作

我的asp.netMVC5Web应用程序面临这个问题,使用Identityv2.0.0.0、EF6、CaSTLeWindsorIOC容器、MicrosoftSQLServer2005我正在尝试使用UserManagerExtensions,FindById()方法获取当前登录的用户,但它抛出错误“System.NotSupportedException:第二个操作在上一个异步操作完成之前在此上下文中启动。使用‘await’以确保在此上下文中调用另一个方法之前任何异步操作已完成。不保证任何实例成员都是线程安全的”我从堆栈跟踪中了解到是“AsyncHelper.RunSync()”导致了问

c# - 等待 N 个异步方法完成时是否有标准模式可遵循?

publicclassFooDataRepository{privateMyServiceReferenceClientClient{get;set;}publicvoidFooClass(){Client=newMyServiceReferenceClient();Client.SaveFooCompleted+=Client_SaveFooCompleted;Client.SaveBarCompleted+=Client_SaveBarCompleted;}privatevoidClient_SaveFooCompleted(Objectsender,EventArgse){...

c# - 检查打印是否成功完成

我正在用C#开发窗口窗体应用程序。在我的应用程序中,我编写了以下代码以从本地计算机获取所有图像并进行打印。files=Directory.GetFiles(@"C:\temp","*.jpeg");foreach(variinfiles){varobjPrintDoc=newPrintDocument();objPrintDoc.PrintPage+=(obj,eve)=>{System.Drawing.Imageimg=System.Drawing.Image.FromFile(i);Pointloc=newPoint(100,100);eve.Graphics.DrawImage(

c# - 在应用程序/服务关闭/停止之前等待计时器经过事件完成

总结:在Windows服务和控制台应用程序中,我调用了一个包含计时器的公共(public)库,该计时器会定期触发大约需要30秒才能完成的操作。这工作正常,但是......当调用服务停止或应用程序退出并且计时器在ElapsedEventHandler中时,我需要服务停止/应用程序退出以等待事件处理程序完成。我通过在调用计时器停止方法时检查boolInEvent属性来实现此功能。虽然这很实用,但问题是:这是执行此操作的最佳方法吗?是否有替代方法可以更好地满足此目的?另一个问题是我需要避免服务停止请求因“服务无法响应停止请求”而失败这是我的实现publicsealedclassTimedPr