【c# – 如何排队/等待TPL任务完成】教程文章相关的互联网学习教程文章

调度任务C#

我有一个C#控制台应用程序.我想每天运行一次.此应用程序不适合在我的本地计算机上运行,??而是作为后台进程在其他用户的计算机上运行.我不希望用户使用任务计划程序手动设置任务.我怎样才能为他实现同样的目标?解决方法:您可以将其设置为在计时器上运行,间隔为1小时. 请参阅此链接以获取示例How do you add a timer to a C# console application 您也可以将其作为Windows服务安装在用户计算机上.

c#-数据流(任务并行库)和异步等待【代码】

可以说我在.NET中使用了Dataflow块.声明“此数据流模型促进基于参与者的编程”我想在这里说的很对. 但是,如果我处理来自的消息,则说BufferBlock< T>.在消息的处理器中,我决定使用async / await,这会将执行分叉到当前的踏步和一个等待任务的工作线程. 有什么方法可以防止参与者/消息处理器中的并发执行吗? 如果等待的任务使用具有本机回调的非阻塞IO操作执行,则很好.但是我真的很想确保任何.NET代码都只能同步执行.解决方法:这很大...

c#-从Web应用程序运行计划的任务【代码】

我正在使用以下代码从Web应用程序执行Windows计划的任务. Web应用程序和计划的应用程序都在同一服务器上运行.var proc = new Process {StartInfo ={UseShellExecute = false,FileName = @"C:\Windows\System32\schtasks.exe",Arguments = "/run /tn StartDataSync",UserName = "admin123",Password = passwd} }; proc.Start(); proc.WaitForExit();现在,我想从在同一网络域中另一台计算机上运行的Web应用程序中运行相同的计划应用程...

C#-非阻塞任务.NET 4.5中的等待【代码】

Task t = Task.Run(async () => { await someAsyncMethod(); }); t.Wait();这是否意味着在等待t.Wait()时,线程将用于其他操作,而不仅仅是坐在那里等待任务完成?只是因为我使用了async()=> {等待someAsyncMethod(); }?解决方法:等待将阻塞调用线程. 要进行非阻塞等待,请使用await:await Task.Run(async () => { await someAsyncMethod(); });但是,Task.Run通常只应用于受CPU约束的方法,因此您更有可能执行以下操作:await someAs...

c#-在asp .net中限制异步任务,对N个成功任务有限制【代码】

我正在使用Asp .Net 4.5.1.我有要运行的任务,称为Web服务,有些可能会失败.我需要运行N个成功的任务,这些任务执行少量的CPU工作,并且主要调用Web服务,然后停止,我想节流. 例如,假设某个集合中有300个URL.我们需要运行一个名为Task< bool>的函数.每个节点上的CheckUrlAsync(url)具有节流功能,例如,意味着“同时”仅运行5个(换句话说,在任何给定时间最多使用5个连接).另外,我们只想执行N次(假设100次)成功的操作,然后停止. 我已经读过...

C#-ASP.NET Web API异步任务,发送邮件【代码】

我的应用程序存在大量的性能问题.我发现问题来自电子邮件发送.当电子邮件发送仍在进行中时,如何解决RegisterUser方法返回的问题?我已经尝试通过启动线程来运行SendEmailConfirm方法来尝试此操作,但是这给了我SendEmailConfirm中的ObjectDisposedExceptionpublic async Task<IdentityResult> RegisterUser(AccountViewModels.RegisterViewModel userModel) {var result = await _userManager.CreateAsync(user, userModel.Password...

C#产生新任务【代码】

假设我有这个功能:void DoWork() {//do long work }我希望此函数在其他线程上执行.我曾经使用过线程,因此在线程上执行它的一种方法是:new Thread(DoWork).Start();我正在尝试学习新的Task / await C#功能,因此我将方法修改为async Task DoWork() {await Task.Run(delegate() { /*do stuff*/}); }现在,我可以这样使用它:DoWork().Wait(0);或者,我可以再次将方法修改为:async void DoWork() {await Task.Run(delegate() { /*do s...

WPF C#-连续执行任务并允许执行另一个任务【代码】

我正在使用C#通过以下程序运行宏: 任务1 :EXCELApplicationObj.GetType().InvokeMember("Run",System.Reflection.BindingFlags.Default |System.Reflection.BindingFlags.InvokeMethod,null, EXCELApplicationObj, oRunArgs);但是,在执行此功能时,我想通过其标题名检查窗口的出现,为此我使用了以下方法: 任务2:Process[] processlist = Process.GetProcesses(); foreach (Process process in processlist) {if (!String.IsNull...

C#-未观察到任务的异常【代码】

我在Application Insight Web应用程序的日志中观察到错误,但是我找不到它的去向,也没有在我的应用程序或Web api(使用Output API的.NET 4.5和Web API 2.0中找到任何奇怪的行为)和Web Api 2 Cache,Azure中的MongoDB,例如具有2个实例的Web App):A Task’s exception(s) were not observed either by Waiting on the Taskor accessing its Exception property. As a result, the unobservedexception was rethrown by the finalizer t...

在C#中启动数千个任务的最佳方法是什么【代码】

可以说我有一个用户列表,我想对所有这些用户执行一些操作,例如更新数据库中其属性之一.用户列表可能包含数万或数十万用户.如果要对用户完成的所有工作都是我的机器本地的,那么我将使用Parallel.ForEach来处理它们,但是因为这将涉及(可能需要几秒钟)等待对外部服务的调用,我认为使用Tasks更合适. 现在,这是我拥有的代码:Task.WaitAll(usersList.Select(user => Task.Run(() => async{cancellationToken.ThrowIfCancellationRequest...

C#-NUnit不等待异步任务完成【代码】

我有一个非常简单的NUnit测试,它正在调用异步方法. 当然,测试正在等待,应该像这样:public async void Test() {var controller = new Controller(mockService.Object);var model = new MyObject{Address = "12.12.12.12",Password = "123456",Username = "John Foo"};var res = await controller.Add(model); }当我运行测试时,它不会等待Add方法完成,即使我告诉它这样做(等待)解决方法:您需要更新测试以返回异步任务public async T...

C#-在任务管理器中打开应用程序作为第二个过程

我想打开一个不同的应用程序,并且看起来像是应用程序本身的一个过程,并且在任务管理器进程列表中不显示为另一个. 就像是:Process.Start()可以做到吗? 解决了!好吧,似乎总是有一个应用程序启动一个流程时,主应用程序就是它的父级.我不知道:)解决方法:可以将Process.Start与ProcessStartInfo一起使用并确保UseShellExecute为false.但是,正在启动的进程可能会破坏此行为.例如,它可能只是存根启动器,它会启动另一个进程然后退出.

异步任务C#【代码】

我试图了解C#中的异步编程.我创建了一个只能调用一次的函数示例.例如,从大文件读取.我想创建一个查询,请求将在查询中等待,直到他们可以安全地读取文件.AsyncWork aw = new AsyncWork();Task.Run(() => {for (int count = 0; count < 10; count++) {aw.DoAsyncWork(count);Console.WriteLine("request added");} }); Console.ReadKey();和AsyncWorkpublic class AsyncWork {int Requests = 0;int Workers = 0;public AsyncWork() { ...

C#练习题答案: 滑稽的算法任务【难度:2级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战【代码】

滑稽的算法任务【难度:2级】: 答案1: using System; using System.Linq;public class NumbersFinder {public static int Generator(int size, int position){if (position < 1 || position > Math.Pow(size, size)) return -1;var sum = "";position--;for (var i = 0; i < size; i++){sum = ((position % size) + 1).ToString() + sum;position /= size;}return int.Parse(sum);} }? 答案2: using System; using System.Collectio...

C# 使用 quartz.net 做定时任务【代码】

Quartz.NET 是一套很好的任务调度框架。在设置定时时间的时候,使用了cron表达式很方便 简单代码 public async Task beginStart(){//从工厂中获取一个调度器实例化IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();await scheduler.Start(); //开启调度器//==========例子1(简单使用)===========var type = Type.GetType("ConsoleTopshelf.HelloJob");IJobDetail job1 = JobBuilder.Create(type)...