草庐IT

task-parallel-library

全部标签

c# - Task.Delay() 未按预期运行

Task.Delay()没有按预期运行,或者我不明白它应该做什么。我试图了解C#中的Task以及如何在我的实现中替换Thread。我想做的是这样的:虽然是真的打印一行等一下,如果满足则退出循环,否则继续循环我已经用Threads很好地实现了,但是所有酷child都说我应该使用Task,并且不要碰Thread。所以对于代码,我有这个(忽略[Test]-这只是一种方便的尝试方法)[Test]publicvoidChattyTask(){varchattyTask=newTask(ChattyWriter);chattyTask.Start();chattyTask.Wait();}publ

c# - Task.Delay() 未按预期运行

Task.Delay()没有按预期运行,或者我不明白它应该做什么。我试图了解C#中的Task以及如何在我的实现中替换Thread。我想做的是这样的:虽然是真的打印一行等一下,如果满足则退出循环,否则继续循环我已经用Threads很好地实现了,但是所有酷child都说我应该使用Task,并且不要碰Thread。所以对于代码,我有这个(忽略[Test]-这只是一种方便的尝试方法)[Test]publicvoidChattyTask(){varchattyTask=newTask(ChattyWriter);chattyTask.Start();chattyTask.Wait();}publ

c# - 将具有变化值的参数传递给任务 - 行为?

场景:循环中的异步任务执行一个方法,该方法包含随着程序的继续而改变的参数:while(this._variable{aList.add(this._variable);update(this._savePoint);});}如果循环运行速度快于任务完成速度,列表会添加变量的当前值还是变量保存在本地并添加原始值? 最佳答案 闭包关闭变量,而不是值。因此,递增_variable可以改变引用它的任务的行为。您可以通过制作本地副本来防止这种情况:while(this._variable{aList.add(local);update(thi

c# - 将具有变化值的参数传递给任务 - 行为?

场景:循环中的异步任务执行一个方法,该方法包含随着程序的继续而改变的参数:while(this._variable{aList.add(this._variable);update(this._savePoint);});}如果循环运行速度快于任务完成速度,列表会添加变量的当前值还是变量保存在本地并添加原始值? 最佳答案 闭包关闭变量,而不是值。因此,递增_variable可以改变引用它的任务的行为。您可以通过制作本地副本来防止这种情况:while(this._variable{aList.add(local);update(thi

A fatal error occurred. The required library hostfxr.dll could not be found.错误处理

一个可控制台程序使用.NET6开发,发行版运行出现如下错误:Afatalerroroccurred.Therequiredlibraryhostfxr.dllcouldnotbefound.Ifthisisaself-containedapplication,thatlibraryshouldexistin[D:\xxxServer\].Ifthisisaframework-dependentapplication,installtheruntimeinthegloballocation[C:\ProgramFiles(x86)\dotnet]orusetheDOTNET_ROOTenviro

c# - 同步使用 nice .net 4.5 HttpClient 的最佳方式

我喜欢新的System.Net.Http.HttpClient类。它有一个非常简单的API,不会抛出正常错误。但它只是异步的。我需要运行的代码(深入服务器内部)foo();bar();//computestuffvarx=GetThingFromOtherServerViaHttp();//computemorestuffwiz(x);经典的顺序同步代码。我看到了几个类似的SO问题,但实际上并没有最终说“这样做”。我看着client.PostAsync.Wait()全世界都在尖叫“不要这样做”。怎么样:client.PostAsync.Result()这不就是变相的等待吗?最后,我最终

c# - 同步使用 nice .net 4.5 HttpClient 的最佳方式

我喜欢新的System.Net.Http.HttpClient类。它有一个非常简单的API,不会抛出正常错误。但它只是异步的。我需要运行的代码(深入服务器内部)foo();bar();//computestuffvarx=GetThingFromOtherServerViaHttp();//computemorestuffwiz(x);经典的顺序同步代码。我看到了几个类似的SO问题,但实际上并没有最终说“这样做”。我看着client.PostAsync.Wait()全世界都在尖叫“不要这样做”。怎么样:client.PostAsync.Result()这不就是变相的等待吗?最后,我最终

c# - UnsafeQueueUserWorkItem 和 "does not propagate the calling stack"到底是什么意思?

我正在阅读和学习有关ThreadScheduler和有关Tasks的文章,并且遇到了MSDNexamples之一中使用的函数ThreadPool.UnsafeQueueUserWorkItem关于自己的ThreadScheduler。在MSDNdescriptionaboutUnsafeQueueUserWorkItem有一个很大的警告,该函数可能是一个安全漏洞,并且它“不传播调用堆栈”。唯一的链接是QueueUserWorkItem,从名称上看,它似乎是“安全对应项”?但也没有提及有关调用堆栈的任何内容。传播堆栈到底意味着什么?开工前抄过来?为什么另一个线程无论如何都需要调用线程的堆

c# - UnsafeQueueUserWorkItem 和 "does not propagate the calling stack"到底是什么意思?

我正在阅读和学习有关ThreadScheduler和有关Tasks的文章,并且遇到了MSDNexamples之一中使用的函数ThreadPool.UnsafeQueueUserWorkItem关于自己的ThreadScheduler。在MSDNdescriptionaboutUnsafeQueueUserWorkItem有一个很大的警告,该函数可能是一个安全漏洞,并且它“不传播调用堆栈”。唯一的链接是QueueUserWorkItem,从名称上看,它似乎是“安全对应项”?但也没有提及有关调用堆栈的任何内容。传播堆栈到底意味着什么?开工前抄过来?为什么另一个线程无论如何都需要调用线程的堆

c# - 重温 Task.ConfigureAwait(continueOnCapturedContext : false)

阅读时间太长。使用Task.ConfigureAwait(continueOnCapturedContext:false)可能会引入冗余线程切换。我正在寻找一个一致的解决方案。长版。ConfigureAwait(false)背后的主要设计目标是减少冗余SynchronizationContext.Postawait的持续回调,在可能的情况。这通常意味着更少的线程切换和更少的UI线程工作。然而,它并不总是如何工作的。例如,有一个3rd方库实现了SomeAsyncApi应用程序接口(interface)。请注意ConfigureAwait(false)由于某种原因,在这个库中的任何地方都没