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

c# – 如何捕获一组任务的异常【代码】

我想了解在尝试等待一个任务数组时我应该在我的“try”块中使用的内容. 我希望等待所有任务,无论其中一个是否抛出异常,以便它们都可以完成. 我应该使用:var tasks = new Task<CasApiRouterModelExtendedInfo>[mbis.Length];for (int i = 0; i < mbis.Length; i++) {tasks[i] = CAS.Service.GetAllRouterInterfacesAsync(mbis[i], false, 2); }try {Task.WaitAll(tasks); } catch (AggregateException ex) {Trace.TraceError("Some...

c# – 无需等待所有任务完成即可访问Enumerable.Range中的结果【代码】

我有一个控制台应用程序,我需要访问一些网址200次,等待所有请求返回并处理200个结果. 我这样做,并行:var classNameTasks = Enumerable.Range(1, 200).Select(i => webApi.getSplittedClassName()).ToArray(); string[][] splittedClassNames = await Task.WhenAll(classNameTasks); if (splittedClassNames[0] == null)result = new TextResult("Error accessing the web");getSplittedClassName返回一个字符串[],如果互联网关闭,...

c# – 取消ASP.NET启动的任务【代码】

背景 以下服务器端代码用于启动长时间运行的任务,该任务将通过SignalR将更新发布到Web前端.我在前端放了一个按钮,我想根据用户的要求停止任务. 问题 当前端触发器的Stop方法时,tokenSource为null.我怀疑,这是因为它没有到达产生任务的ChartHub的同一个实例. 码using System; ... using System.Security.Principal;namespace dvvWeb.Hubs { public class ChartHub : Hub {CancellationTokenSource tokenSource;CancellationToken ct...

在C#.NET Web应用程序中每天安排任务的正确方法【代码】

我有一个ASP.NET MVC应用程序,允许用户存储视频和照片等媒体. 该应用程序还允许用户删除存储在服务器中的那些媒体.为此,我想实现“两步”过程,其中首先(当选择要删除媒体时),数据库中的媒体条目将获得一个时间戳,指示必须在一段时间内删除该条目(例如一个月);如果在该时间内未删除该时间戳,则应该存在每天执行的调度方法,并检查媒体条目是否具有足够大的时间戳以便删除. 我的问题是关于调度程序:我已经知道有一些像FluentSchedule...

c# – 永久和计划任务的最佳设计

我有一个要求,我需要有一些任务永久运行,而其他一些应该只是按计划运行,但我不知道处理这种情况的最佳方法应该是什么. 对于预定的作业,我以为我会使用一个线程池和永久运行的作业,我以为我只有一个线程数组,这些线程将在我的Windows服务启动时创建并启动. 这是正确的和/或最好的方法还是有更好的方法来处理这个问题? 请注意,无论是否已安排和/或永久运行,我都需要能够取消正在运行的作业. 谢谢 PS:请注意这个问题已被完全重新措辞...

c# – TPL如何正确取消任务【代码】

我有以下任务cancelSource = new CancellationTokenSource(); token = cancelSource.Token;string strDbA = textBox1.Text; string strDbB = textBox2.Text;// Start duplication on seperate thread. asyncDupSqlProcs =new Task<bool>(state =>UtilsDB.DuplicateSqlProcsFrom(token, mainForm.mainConnection, strDbA, strDbB), "Duplicating SQL Proceedures"); asyncDupSqlProcs.Start(); asyncDupSqlProcs.ContinueWith(task...

c# – 任务并行库是否提供了一种池化打开连接的方法?

背景 我有一个连接到Microsoft CRM 2011的服务,并更新了数以万计的记录.运行单线程导致在我们的开发环境中只有30条记录在一分钟内得到更新.我使用TPL Parallel.Inovke切换到多线程,但与CRM的连接不是线程安全的,因此我为我正在处理的每条记录创建了一个新连接.这个改变只增加了我的每分钟60个记录.然后我返回并将记录一起批处理,因此每个线程将打开一个连接,然后一次处理1000条记录.这增加了我每分钟大约500次更新.我可以继续沿着这...

c# – Asp.net mvc5.异步等待.使用diff返回类型等待任务【代码】

我刚开始使用.net mvc 5异步等待.我在运行时确定并行运行的任务很少.所有这些都有不同的返回类型,我想使用Task.WhenAll等待它们.像这样question讨论,但我没有运行预定义的任务集.我需要在运行时创建具有不同返回类型的任务集合等一下解决方法:您只需创建一个List< Task>然后使用Task.WhenAll:var tasks = new List<Task>(); var task1 = Func1Async(); tasks.Add(task1); var task2 = Func2Async(); tasks.Add(task2); ...await T...

c# – 如何取消执行非托管C外部例程的任务【代码】

我正在尝试修复C#异步代码,启动在非托管C例程中编写的外部dll中执行的可取消操作. 有没有办法在创建时使用传递给Task的Cancellation Token取消任务,如果用户委托调用外部非托管C例程? 据我所知,任务取消涉及用户代表与请求取消的代码之间的合作.成功取消涉及请求代码调用CancellationTokenSource.Cancel方法,并且用户委托及时终止操作,方法是在他注意到已经提出取消请求时通过简单地从委托返回(通过轮询CancellationToken.IsCance...

c# – 对不同的计划任务使用单个exe【代码】

在当前项目中,我正在使用任务调度程序来运行控制台应用程序来执行一些日常操作.现在,我想将相同的控制台应用程序用于需要每15分钟运行一次的另一个操作.为了识别同一控制台应用程序中的操作,我打算使用不同的参数.例如MyProject.Services.exe "RunDailyTask"MyProject.Services.exe "RunEvery15MinutesTask"因此,两个调度程序将调用相同的exe但具有不同的参数来执行不同的操作. 我的问题是,这是个好主意吗?一个操作可以影响另一个...

c# – 在引擎盖下的阻止任务中取消令牌【代码】

我有两个按钮来启动和停止TcpListener.private void buttonStartServer_Click(object sender, EventArgs e) {ThreadPool.SetMinThreads(50, 50);IPAddress ipAddress = IPAddress.Parse("127.0.0.1");_listener = new TcpListener(ipAddress, 5000);cancelSource = new CancellationTokenSource();CancellationToken token = cancelSource.Token;var taskListener = Task.Factory.StartNew((t) => Listener(token),token,TaskCreat...

c# – 如何取消挂起的任务?【代码】

我们有一个Windows服务调用第三方方法,当最终用户不正确配置时,该方法可能会挂起,这很难事先测试.我们通过在超时中调用Task中的方法来处理这种风险:private int? FooWithTimeout() {var timeout = TimeSpan.FromMinutes(1);var task = Task.Run(Foo);if (!task.Wait(timeout)){Log("Foo timed out...");return null;}if (task.IsFaulted){Log("Foo threw an exception...");return null;}return task.Result; }第三方方法永远阻止...

c# – 完成订购任务后获取对原始任务的引用?【代码】

我前一段时间问过a question关于订购List< Task< T>>>的方法了.通过它们的完成,还返回表示原始列表中的已完成任务的索引的int< Task< T>>给出. 我知道我可能不需要返回这个int来确定哪个特定的任务已经完成,并且我可以查询返回的任务以获取此信息. 作为旁注,我已经改变了方法来订购List< Task>.我最初使用Task< T>,它返回一个bool来表示Task< T>是否成功.我现在简单地抛出一个Exception的子类,它提供了有关Task失败的方式和原因的更...

c# – 说丢弃任务的非异步方法是否位于async-await链的“顶部”是否正确?【代码】

我理解异步方法本身是如何工作的:编译器将其转换为创建状态机(在堆上)的代码,以便该方法实际上“暂停”到达等待状态并返回任务并且调用堆栈展开.在这个链的“底部”是一个简单地返回任务的方法,通常是在启动“自然异步”过程(如I / O)之后. 那么,什么是“顶部”?我想最顶层的方法只是丢弃任务,所以它可以继续前进.那是对的吗? 也许有人可以描述这个的最简单方法是我们的??执行上下文是Windows Forms应用程序而“top”是消息泵.解...

c# – “无法执行脚本,因为脚本入口点无效”SSIS中的脚本任务出错【代码】

我正在尝试使用SSIS脚本任务将文件从本地文件夹上传到SFTP.从https://winscp.net/eng/docs/library#csharp复制脚本时出现错误Error: Cannot execute script because the script entry point is invalid. 以下是完整的脚本:using System; using System.Data; using Microsoft.SqlServer.Dts.Runtime; using System.Windows.Forms; using WinSCP;namespace ST_1ae95a63b20641ffb8ed1769503e2841 {[Microsoft.SqlServer.Dts.Tasks.Sc...