task-parallel-library
全部标签 我正在开发.net核心网络应用程序(针对net461)。该应用需要引用COMdll。我添加了COM引用,应用程序仍然在我的开发机器上构建。但是,在构建服务器上它无法构建并出现此错误:C:\ProgramFiles(x86)\dotnet\sdk\2.0.0\Microsoft.Common.CurrentVersion.targets(2604,5):错误MSB4062:“Microsoft.Build.Tasks.ResolveComReference”任务无法从程序集Microsoft.Build.Tasks.Core加载经过一番搜索,这似乎是一个非常不常见的错误。任何人都知道错误
关于TaskCompletionSource的内部运作,我有些不清楚.创建简单的Task时使用Factory,我希望这个任务在线程池中排队,除非我指定TaskCreationOptions.LongRunning,它将改为在新线程中运行。我对TaskCompletionSource的理解,是我负责在任务结束或失败时触发,并且我完全控制如何管理线程。然而,TaskCompletionSource的负责人允许我指定TaskCreationOptions,这让我很困惑,因为我期待Scheduler无法自行处理任务。TaskCreationOptions的目的是什么?在TaskCompleti
我有一个具有此返回类型的方法:publicasyncTask>GetAll()它进行了一些进一步的异步调用(未知数量),每个调用返回一个可枚举T的任务,然后想要连接结果以返回。vardata1=src1.GetAll();vardata2=src2.GetAll();vardata3=src3.GetAll();//andsoon现在很容易等待所有结果并连接结果以生成单个可枚举项,但我希望在第一次调用返回后立即使用可枚举项,如果有任何调用,则可能会等待调用者/枚举器当可用结果用完时仍然悬而未决。我是否必须为此手动滚动一个concat,以解决当它包装在任务中时缺少枚举器支持的问题?或者在
下面的Test_Click是在UI线程上运行的代码的简化版本(带有WindowsFormsSynchronizationContext):voidTest_Click(objectsender,EventArgse){vartask=DoNavigationAsync();task.ContinueWith((t)=>{MessageBox.Show("Navigationdone!");},TaskScheduler.FromCurrentSynchronizationContext());}我是否应该显式指定TaskScheduler.FromCurrentSynchronizat
由于我必须在我的应用程序中进行大量文件I/O操作,我决定异步实现它们。查看MSDN,没有File.Create、File.Delete和File.Move的异步副本。据我了解,原因是不存在用于文件删除、创建或移动的异步Win32实现,所以我最终得到以下解决方案:publicstaticTaskDeleteAsync(stringpath){Guard.FileExists(path);returnTask.Run(()=>File.Delete(path));}publicstaticTaskCreateAsync(stringpath){Guard.IsNotNullOrWhites
我刚刚将我网站的一些代码从使用QueueUserWorkItem转换为Task.Factory.StartNew我有一些错误的代码引发了异常并最终关闭了w3wp。在WindowsServer2008R2、x64上运行IIS7.5Task.Factory.StartNew(()=>{MethodThatThrowsException();}Application:w3wp.exeFrameworkVersion:v4.0.30319Description:Theprocesswasterminatedduetoanunhandledexception.ExceptionInfo:Syst
如果用户执行删除项目等操作,它会立即从UI中删除它们,然后使用TPL在后台线程上将它们从数据库中删除。问题是,如果用户在后台线程结束之前退出应用程序,则该项目实际上不会被删除。在关闭应用程序之前是否有等待异步操作完成的标准方法?我的异步调用是这样的:if(MyObjectList.Contains(obj))MyObjectList.Remove(obj);Task.Factory.StartNew(()=>DAL.DeleteObject(obj));更新这是我使用的最终代码。我很高兴看到它按预期工作,但如果我可以改进它,请告诉我。我还有很多东西要学:)publicpartialcl
我的一位同事发现我们的代码存在问题,花了一段时间才查明到底发生了什么,但这个简单的例子可以最好地证明这一点://FailsclassProgram{staticvoidMain(string[]args){Task.Run(()=>Console.WriteLine("HelloWorld"));Console.ReadKey();}}//WorksfineclassProgram{staticvoidMain(string[]args){Console.Write(String.Empty);Task.Run(()=>Console.WriteLine("HelloWorld"));
我需要一个需要维护不同任务队列的环境,并且每个任务队列都有明确定义的并发线程数,可以为每个队列执行。像这样:队列1->3个线程;队列2->6个线程;任务系统的种类。我已经成功地使用普通的旧c#代码(又名System.Threading.Thread、锁和队列)自己实现了这一点,它可以正常工作1年以上。然而,我一直在阅读关于TaskFactory和TaskScheduler的奇迹的文章,关于.NET中内置类的可能性,但我没有找到一个例子来证明这一点。我想测试它并与我现在拥有的进行比较,看看它是否运行得更好,如果运行良好,则更换它。此外,我可以不必限制/设置每个队列的并行线程数,只要我能得
这是一个简单的WinForms应用程序:usingSystem;usingSystem.Diagnostics;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceWindowsFormsApplication{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privateasyncvoidbutton1_Click(objectsender,EventArgse){varts=Task