【C#-等待来自其他类的任务】教程文章相关的互联网学习教程文章

c# – 当ThreadPool中的活动线程数大于ThreadPool.GetMinThreads()时启动任务【代码】

取自我以前的一个问题的答案(Task.Factory.StartNew starts with a great delay despite having available threads in threadpool):“It’s not the MAX worker threads value you need to look at – it’s theMIN value you get via ThreadPool.GetMinThreads(). The max value is theabsolute maximum threads that can be active. The min value is thenumber to always keep active. If you try to start a thread when then...

什么是在序列中运行C#任务的有效方法【代码】

我正在尝试找到一种方法来安排任务按顺序运行.我到目前为止提出的解决方案发布在下面,但我怀疑它可以以更容易/更有效的方式完成.public class SequentialTaskRunner {private ISet<Task> runningTasks = new HashSet<Task>();public void Run(Task task){lock (runningTasks){var tasksToAwait = runningTasks.ToArray();// create a task that waits for the currently running tasksvar waitingTask = Task.Factory.StartNew(() ...

c# – 异步/等待任务和WaitHandle【代码】

假设我有10N个项目(我需要通过http协议获取它们),在代码中N任务开始获取数据,每个任务按顺序排列10个项目.我将这些项目放在ConcurrentQueue< Item>中.之后,逐个线程不安全地处理项目.async Task<Item> GetItemAsync() {//fetch one item from the internet }async Task DoWork() {var tasks = new List<Task>();var items = new ConcurrentQueue<Item>();var handles = new List<ManualResetEvent>();for i 1 -> N{var handle = ne...

c# – 使用任务重试异步函数 – 哪种方法更有效?【代码】

我想知道哪种方法在内存和资源使用方面更有效率. 特别是方法#1,我很难想象如何创建任务对象和线程旋转?有人可以详细解释一下详细介绍的内容吗? 如果两者之间没有区别(我想避免冒泡异步),我想使用#1.对于#2,我理解编译器将在下面生成一个状态机并返回. OTOH,#1在概念上似乎是递归的,但在传统意义上它是递归的,就像在一个堆栈帧中等待另一个? 方法#1:internal static Task ExecuteAsyncWithRetry(Func<Task> methodToExecute, Fu...

c# – 并行运行多个任务(变量编号),并在完成所有任务后继续【代码】

我需要不并行地启动一个“数量”的任务(变量但小于10) 并等待他们全部完成,从每个结果得到. 我从每个中获取结果,保存在列表中,然后最终使用它. 这是我的代码,它正在运行,但我认为必须有一个更清洁的方法来做到这一点. 导致任务数量增加List<String> Arguments = new List<String> { "AA", "BB", "CC" }; List<String> ResultList = new List<String>(); //**AT LEAST I'VE GOT ONE**Task<String> Tasks = Task<String>.Fact...

c# – 任务并行库(TPL)是否处理​​竞争条件【代码】

我试图理解任务并行库相对于使用传统多线程的好处,当我考虑下面的情况时,我想到它是否处理竞争条件还是我们需要在代码中处理这个问题? 这是我的代码:int depdt = 0; Parallel.For(1, 10, mem =>{for (int dep = 1; dep <= 10; dep++){depdt = dep;Console.WriteLine("MEMBER: " + mem + " " + "Dependent: " + dep);}Console.WriteLine("Dep Value: " + depdt + " " + "mem: " + mem);});Console.ReadKey();我运行了几次,我没...

c# – 具有大量文件IO任务的多线程【代码】

我不是C#的新手,但我对语言不太熟悉,知道如何做我需要做的事情. 我有一个文件,称之为File1.txt. File1.txt有100,000行左右.我将复制File1.txt并将其命名为File1_untested.txt.我还将创建一个空文件“Successes.txt”对于文件中的每一行: >从File1_untested.txt中删除此行>如果此行通过测试,请将其写入Successes.txt 所以,我的问题是,我怎样才能多线程呢? 到目前为止,我的方法是创建一个对象(LineChecker),给对象提供要检查的行,并...

C#中的任务 – 使用随机数的不明确结果【代码】

我正在学习C#中的异步编程,并编写此代码来测试任务并行库(控制台应用程序):static void Main(string[] args) {Stopwatch sw = new Stopwatch();var opr1 = new SlowOperation();var opr2 = new SlowOperation();//TASKConsole.WriteLine("Started processing using TASK. Start: {0}", sw.Elapsed);sw.Start();Task.Factory.StartNew(() => opr1.PerformSlowOperation(1));Task.Factory.StartNew(() => opr2.PerformSlowOperation...

使用C#在任务计划程序中进行常规设置【代码】

我想将任务计划程序中的“配置为”设置为“Windows 7”. 当前的C#代码:using (TaskService ts = new TaskService()){TaskDefinition td = ts.NewTask();TimeTrigger trigger = new TimeTrigger();var startTime = TimeSpan.Parse(section1["ScheduledTime"]);trigger.StartBoundary = DateTime.Today + startTime;trigger.Repetition.Interval = TimeSpan.FromDays(1);td.Triggers.Add(trigger); td.Actions.Add(new ExecAction(...

c# – 任务取消不停止任务执行【代码】

我有一个查询活动目录的任务,并使用结果填充列表.我已经设置了我的任务以便可以取消它,但是,当调用取消时,任务会继续执行其工作.我知道任务已被取消,因为它返回并且运行了要在任务返回上执行的操作,但查询在后台继续运行,使用内存和处理能力.任务可以重复启动和“取消”,每次迭代任务都在运行并使用资源.如何取消实际取消? 视图模型private async Task RunQuery(QueryType queryType,string selectedItemDistinguishedName = null...

c# – 任务并行库(TPL)中的线程同步【代码】

我正在学习TPL并坚持不懈.这只是为了学习目的,我希望人们能指导我正确的方向. 我只想要一个线程一次访问变量sum,这样它就不会被覆盖. 我的代码如下.using System; using System.Threading.Tasks;class ThreadTest {private Object thisLock = new Object();static int sum = 0;public void RunMe(){lock (thisLock){sum = sum + 1;}}static void Main(){ThreadTest b = new ThreadTest();Task t1 = new Task(()=>b.RunMe());Task t...

c# – 在生成的IL代码中,缺少一些行.线之间的任务是什么?【代码】

参见英文答案 > CIL have a label on every instruction?' rel='nofollow' target='_blank'>Why does C# -> CIL have a label on every instruction? 2个 .method private hidebysig static void Main(string[] args) cil managed {.entrypoint// Code size 9 (0x9).maxstack 1.locals init ([0] class ConstReadOnly.second p)IL_0000: nopIL_0001: ldc.i4.5IL_0002: newobj ...

具有无限while循环的异步任务之间的C#同步?【代码】

我有一个异步任务运行无限循环做一些实时处理:private async void RealTimeProcessingAsync() {while (true){//....Tmstaus status = await ReadStatusAsync();switch (status){case Ack://...break;//...}//...} }我创建了另一个异步方法SendWriteRqst,它将命令发送到RealTimeProcessingAsync(),应该等待状态设置为已定义的条件并返回.public async Task<WriteState> SendWriteRqstAsync(TmCommand tmCmd) {//...await SomeCond...

c# – VS 2017添加> Docker支持中断构建 – “CleanWorkspace”任务意外失败(控制台应用程序)【代码】

首先,我使用的是.NET 4.6.1.使用VS 2017的Docker是否不适用于除.NET Core之外的任何东西? 我使用了新功能Add> Docker支持从上下文菜单中创建了一堆文件.这是我的Dockerfile(因为它是自动创建的,所以没有触及它):FROM microsoft/windowsservercore ARG source WORKDIR /app COPY ${source:-obj/Docker/publish} . ENTRYPOINT ["C:\app\nameofmyapp.exe"]当我构建时,我收到以下错误:The “CleanWorkspace” task failed unexpecte...

c# – 为什么CS4014没有显示所有返回任务的函数?【代码】

假设以下代码:private async Task Test1Async() => await Task.Delay(1000).ConfigureAwait(false); private Task Test2Async() => Test1Async();从功能上讲,这些函数完全相同,但编译器将调用这些方法视为不同.以下代码编译,但发出CS4014警告:private void Test() => Test1Async(); // CS4014 is shown它会生成警告“因为不等待此调用,当前方法在调用完成之前继续运行”.这是一个正确的警告,因为它通常表示代码中存在缺陷.如果...