草庐IT

完成率

全部标签

c# - 如果线程正在等待异步操作完成,.NET Task 线程的资源是否会暂时返回池中?

我有一个做两件事的TPL任务。首先,它调用网络服务。其次,它将一些数据插入数据库。我有多达20个任务同时开始,一遍又一遍地做同样的事情。他们整天所做的就是调用Web服务并将数据插入数据库。我对.NET中的TPL还很陌生。我已经完成了一些有关后台工作进程和异步Web服务的工作。Web服务调用和数据库插入都是任务运行线程内的阻塞调用。我知道在幕后,当您使用Tasks时,.NET会为您管理一个线程池。是吗?如果我使用async和await()进行服务调用和数据库调用而不是使它们阻塞调用,线程池是否会有更多线程供其使用?我的理论(我不确定我为什么这么认为)是线程在等待阻塞的Web服务时正忙于无

c# - 文本框自动完成(多行)

我正在使用C#进行自动建议/完整文本框,我点击了以下链接,但文本框未显示建议​​Howtocreateautosuggesttextboxinwindowsforms?//--------Getalldistinctdescription-----------------------------OleDbCommandcommand=newOleDbCommand(Queries.qry16,Connection);OleDbDataReaderreader=command.ExecuteReader();//---------Storing----------------------

c# - TransformBlock 永远不会完成

我正试图围绕TPL数据流block中的“完成”进行思考。特别是,TransformBlock似乎从未完成。为什么?示例程序我的代码计算从1到1000的所有整数的平方。为此我使用了一个BufferBlock和一个TransformBlock。在我的代码后面,我等待TransformBlock完成。但是,该block从未真正完成,我不明白为什么。staticvoidMain(string[]args){varbufferBlock=newBufferBlock();varcalculatorBlock=newTransformBlock(i=>{Console.WriteLine("Cal

c# - 如果静态只读成员调用静态方法获取值,是否同步完成?

给定:publicclassMyClass{privatestaticreadonlyDictionarymydict=CreateDictionary();privatestaticDictionaryCreateDictionary(){...}}这是同步完成的吗?(即MyClass的两个快速实例化是否会导致CreateDictionary()被调用两次? 最佳答案 是的,它是线程安全的。IstheC#staticconstructorthreadsafe?Staticconstructorsareguaranteedtober

c# - 在 C# 或 PowerShell 中是否有一种相对直接的方法来完成 CD 或 DVD?

首先,对术语进行一些澄清。完成,我并不是说结束session;我的意思是在CD或DVD上以这样一种方式写入导出,即无法再通过通常的方式(Roxio、Nero、WindowsExplorer等)向其中添加信息我对此进行了大量研究。有一些开源程序,例如InfraRecorder我们可以从中得到一些启发,但它们似乎都涉及使用IMAPI的相当复杂的C++代码,这似乎是一种非常低级的做事方式。我们团队中的开发人员都没有C++或IMAPI专业知识来支持这样的代码库。互联网上最有前途的资源似乎是thisone,但它似乎不包含最终确定功能。这是“写入图像”的代码:publicvoidWriteImag

c# - 在退出程序之前等待 System.Threading.Timer 回调完成

我有一个List.每个计时器以可配置的时间间隔触发(默认10分钟)。所有调用相同的回调方法(具有不同的参数)。回调方法可能需要几秒钟才能完成其工作。当程序终止时,回调方法的执行似乎立即停止(我没看错吗?)。如何在退出程序之前优雅地等待任何当前正在执行的回调方法完成? 最佳答案 您可以使用WaitHandler参数处理所有计时器。仅当回调方法完成时才会向此处理程序发出信号(如规范所述:“在所有当前排队的回调完成之前,计时器不会被释放。”)voidWaitUntilCompleted(ListmyTimers){ListwaitHnd=

c# - 取消任务并等待它完成

我有一项耗时的任务,我需要在单独的线程中运行以避免锁定GUI线程。随着此任务的进行,它会更新特定的GUI控件。问题是用户可能会在任务结束前移动到GUI的另一部分,在这种情况下,我必须:取消正在进行的任务(如果它处于事件状态)等到它完成取消:这很重要,因为耗时任务的目标是更新特定控件。如果有多个线程同时尝试执行此操作,事情可能会变得一团糟。从头开始任务举一个具体的例子,假设表单有两部分:一部分用于导航目录树,另一部分用于显示缩略图。当用户导航到另一个目录时,需要刷新缩略图。首先我想到了使用BackgroundWorker和AutoResetEvent来等待取消,但我一定是搞砸了,因为我在

c# - 在等待 List<Task> 中的所有任务完成时显示进度

我目前正在尝试在一行的末尾连续打印点作为不确定进度的一种形式,同时运行大量任务,使用以下代码:start=DateTime.Now;Console.Write("*Processingvariables");TaskentireTask=Task.WhenAll(tasks);Taskprogress=newTask(()=>{while(!entireTask.IsCompleted){Console.Write(".");System.Threading.Thread.Sleep(1000);}});progress.Start();entireTask.Wait();timeDi

c# - 等到单元测试中的所有任务完成

我有这个类我想进行单元测试:publicclassSomeClass{publicvoidFoo(){Bar();}privatevoidBar(){Task.Factory.StartNew(()=>{//Dosomethingthattakessometime(e.g.anHTTPrequest)});}}这就是我的单元测试的样子:[TestMethod]publicvoidTestFoo(){//Arrangevarobj=newSomeClass();//Actobj.Foo();obj.Foo();obj.Foo();//Assert/*Ineedsomethingtowai

c# - 如何创建一个产生单一值且永不完成的可观察对象

我知道Observable.Never()作为创建一个永不完成的序列的方法,但是是否有一个扩展/干净的过程来创建一个产生单个值然后永不完成的可观察对象?我和Observable.Create(...)一起去吗??Observable.Concat(Observable.Return(onlyValue),Observable.Never())?或者是否有内置或比这更多的“RXy”? 最佳答案 对于您的具体问题,一个简单的选择是使用‛Never‛和‛StartWith‛:Observable.Never().StartWith(5)但