草庐IT

task-parallel-library

全部标签

c# - 为什么当我尝试访问我的任务的结果属性时此异步操作挂起?

我有一个多层.Net4.5应用程序调用一个使用C#的新async和await关键字的方法,但我不明白为什么会挂起。在底部,我有一个扩展我们的数据库实用程序OurDBConn的异步方法(基本上是底层DBConnection和DBCommand对象的包装器):publicstaticasyncTaskExecuteAsync(thisOurDBConndataSource,Funcfunction){stringconnectionString=dataSource.ConnectionString;//StarttheSQLandpassbacktothecalleruntilfinis

c# - 当前的 SynchronizationContext 不能用作 TaskScheduler

我正在使用Tasks在我的ViewModel中运行长时间运行的服务器调用,结果使用TaskScheduler.FromSyncronizationContext()编码回Dispatcher。例如:varcontext=TaskScheduler.FromCurrentSynchronizationContext();this.Message="Loading...";Tasktask=Task.Factory.StartNew(()=>{...}).ContinueWith(x=>this.Message="Completed",context);当我执行应用程序时,这工作正常。但是

c# - 当前的 SynchronizationContext 不能用作 TaskScheduler

我正在使用Tasks在我的ViewModel中运行长时间运行的服务器调用,结果使用TaskScheduler.FromSyncronizationContext()编码回Dispatcher。例如:varcontext=TaskScheduler.FromCurrentSynchronizationContext();this.Message="Loading...";Tasktask=Task.Factory.StartNew(()=>{...}).ContinueWith(x=>this.Message="Completed",context);当我执行应用程序时,这工作正常。但是

c# - 如何限制并发异步 I/O 操作的数量?

//let'ssaythereisalistof1000+URLsstring[]urls={"http://google.com","http://yahoo.com",...};//nowlet'ssendHTTPrequeststoeachoftheseURLsinparallelurls.AsParallel().ForAll(async(url)=>{varclient=newHttpClient();varhtml=awaitclient.GetStringAsync(url);});这就是问题所在,它同时启动了1000多个Web请求。有没有一种简单的方法来限制这些异步ht

c# - 如何限制并发异步 I/O 操作的数量?

//let'ssaythereisalistof1000+URLsstring[]urls={"http://google.com","http://yahoo.com",...};//nowlet'ssendHTTPrequeststoeachoftheseURLsinparallelurls.AsParallel().ForAll(async(url)=>{varclient=newHttpClient();varhtml=awaitclient.GetStringAsync(url);});这就是问题所在,它同时启动了1000多个Web请求。有没有一种简单的方法来限制这些异步ht

c# - 创建线程 - Task.Factory.StartNew 与 new Thread()

我刚刚了解.Net4中新的线程和并行库过去我会像这样创建一个新线程(作为示例):DataInThread=newThread(newThreadStart(ThreadProcedure));DataInThread.IsBackground=true;DataInThread.Start();现在我可以:Taskt=Task.Factory.StartNew(()=>{ThreadProcedure();});有什么区别?谢谢 最佳答案 区别很大。任务在ThreadPool上安排,如果合适,甚至可以同步执行。如果您有长时间运行的后

c# - 创建线程 - Task.Factory.StartNew 与 new Thread()

我刚刚了解.Net4中新的线程和并行库过去我会像这样创建一个新线程(作为示例):DataInThread=newThread(newThreadStart(ThreadProcedure));DataInThread.IsBackground=true;DataInThread.Start();现在我可以:Taskt=Task.Factory.StartNew(()=>{ThreadProcedure();});有什么区别?谢谢 最佳答案 区别很大。任务在ThreadPool上安排,如果合适,甚至可以同步执行。如果您有长时间运行的后

【C#/.NET】探究Task中ConfigureAwait方法

​ 目录 引言ConfigureAwait方法的作用和原理ConfigureAwait方法的使用场景非UI线程场景避免上下文切换避免死锁ConfigureAwait方法的注意事项在UI线程使用时需要小心嵌套搭配使用总结 引言        在.NET开发中,我们经常使用异步编程来提高应用程序的性能和响应能力。而在异步编程中,ConfigureAwait方法是一个非常重要的方法,它可以对任务(Task)的上下文进行配置,从而影响任务的执行和调度。本篇博客将深入探究ConfigureAwait方法的作用和用法,帮助读者更加准确地理解和使用这个方法。ConfigureAwait方法的作用和原理   

android studio构建报错Could not create task ‘:app:generateLintModuleInfo‘.

原因:创建一个全新项目,只导入了一个第三方库。构建时总是无法成功。一、首先报错TheminCompileSdk(32)specifiedinadependency'sAARmetadataTheminCompileSdk(32)specifiedinadependency'sAARmetadata(META-INF/com/android/build/gradle/aar-metadata.properties)isgreaterthanthismodule'scompileSdkVersion(android-30).Dependency:androidx.appcompat:appcomp

c# - 等待与 task.Result 相同的已完成任务?

我目前正在阅读StephenCleary撰写的“C#Cookbook中的并发性”,我注意到以下技术:varcompletedTask=awaitTask.WhenAny(downloadTask,timeoutTask);if(completedTask==timeoutTask)returnnull;returnawaitdownloadTask;downloadTask是对httpclient.GetStringAsync的调用,timeoutTask正在执行Task.Delay。如果没有超时,则downloadTask已经完成。鉴于任务已经完成,为什么有必要进行第二次等待而不是返