草庐IT

get_task_logger

全部标签

c# - TaskCompletionSource 抛出 "An attempt was made to transition a task to a final state when it had already completed"

我想使用TaskCompletionSource来包装MyService这是一个简单的服务:publicstaticTaskProcessAsync(MyServiceservice,intparameter){vartcs=newTaskCompletionSource();//EverytimeProccessAsynciscalledthisassignstoCompleted!service.Completed+=(sender,e)=>{tcs.SetResult(e.Result);};service.RunAsync(parameter);returntcs.Task;}

c# - Task.Yield() 与 Task.Delay(0)

Delay(0)是否总是内联?根据我的经验,它确实:usingSystem;usingSystem.Threading;usingSystem.Threading.Tasks;namespaceConsoleApplication{classProgram{staticasyncTaskTest(){awaitTask.Yield();Console.WriteLine("afterYield(),thread:{0}",Thread.CurrentThread.ManagedThreadId);awaitTask.Delay(0);Console.WriteLine("afterDe

c# - Task.WaitAll 不等待任务完成

在尝试弄清楚C#中的新(现在可能不是那么新,但对我来说还是新的)Task异步编程时,我遇到了一个问题,我花了一些时间才弄明白,我不确定为什么。我已经解决了这个问题,但我仍然不确定为什么它是一个问题。我只是想我会分享我的经验,以防有人遇到同样的情况。如果有任何专家愿意告诉我问题的原因,那将是非常好的,我们将不胜感激。我总是喜欢知道为什么某些东西不起作用!我做了一个测试任务,如下:Randomrng=newRandom((int)DateTime.UtcNow.Ticks);intdelay=rng.Next(1500,15000);Task>testTask=Task.Factory.S

c# - 'GET OR SET ACCESSOR EXPECTED' 是什么意思?

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Data;usingSystem.Data.SqlClient;publicpartialclassRepeaterEx2:System.Web.UI.Page{SqlConnectioncn=null;SqlDataAdapterda=null;DataSetds=null;StringstrSqlQuery=

C# 异步/等待 : Leave AsyncLocal<T> context upon task creation

AsyncLocal允许我们将上下文数据保存在异步控制流中。这非常巧妙,因为所有后续简历(甚至在另一个线程上)都可以检索和修改环境数据(AsyncLocalonMSDN)。有没有办法为子任务“留下”当前的异步本地上下文,从而创建一个新的本地上下文?AsyncLocalData=newAsyncLocal();Data.Value="One";Task.Factory.StartNew(()=>{stringInnerValue=Data.Value;//InnerValueequalsto"One",Ineedittobenull.});在上面的示例中,内部任务与外部控制流共享Asyn

c# - 什么时候用Task,什么时候用Thread?

我刚刚问了有关Task的问题,但意识到我实际上想问更一般的问题。有人可以总结一下任务和线程的优缺点。如何理解我应该使用任务还是线程? 最佳答案 Task是以异步方式执行某事的命令。Thread实际上是OS内核对象,它执行所请求的内容。将Task想象成一个聪明的线程聚合器/组织器,它“知道”在您的CPU上同时运行多少任务更好。它只是比多线程的常见实现更聪明(这就是为什么建议选择Microsoft的原因)。此功能可帮助您以更轻松的方式管理Threads。也看看这个ShouldiuseThreadPoolsorTaskParallelLi

c# - 是否有使用 POST 而不是 GET 的 MVC Pager?

这是我的问题。我有一个具有大量搜索条件的SearchViewModel,这些值根本不适合URL。我目前正在使用TroyGoode的Html.PagedListPager,但它被设计为使用Url.Action()来发送URL中的参数。这是一个例子。我不认为客户端过滤是一种选择,因为我会有很多记录。@Html.PagedListPager((IPagedList)@Model.SearchResults,page=>Url.Action("Results",new{YearBuiltFrom=Model.YearBuiltFrom,}))}如果您只有一两个简单的参数,这是一个很好的解决方案

c# - .NET 框架中是否有针对不同 Web 方法类型(GET、PUT、POST、DELETE、HEAD)的常量?

我刚刚在创建RESTfulWCF服务时注意到WebInvoke属性上的Method参数区分大小写(需要大写)。所以,[WebInvoke(Method="Delete")]不等于[WebInvoke(Method="DELETE")]这个错误导致了ProtocolException:System.ServiceModel.ProtocolException:Theremoteserverreturnedanunexpectedresponse:(405)MethodNotAllowed.我想知道我应该使用.NET框架中的一组常量来代替上面示例中的“DELETE”。我当然可以定义我自己的

c# - 我应该怎么做才能在 .NET 2.0 中使用 Task<T>?

.NET4.0有TPL,它包含很好的Task类来封装异步编程模型。我正在开发一个必须是.NET2.0的应用程序,但我想避免重写Task。有什么建议吗? 最佳答案 我知道你说过你不想重写Task,但实际上你可以使用闭包创建一些相当简单的东西,它的行为有点像Task对象。这是我使用的:publicdelegateRAsyncTask();publicstaticAsyncTaskBeginTask(AsyncTaskfunction){Rretv=default(R);boolcompleted=false;objectsync=new

c# - 是否应该重写所有接口(interface)以返回 Task<Result>?

我有一个简单的界面publicinterfaceSomethingProvider{publicSomethingGetSomething();}为了“使”它异步,我会这样做publicinterfaceSomethingProvider{publicTaskGetSomethingAsync();}虽然接口(interface)现在暗示GetSomething是异步的,但它允许同步执行,如果同步结果足够快,这很好。如果它阻塞,那么我可以将责任归咎于实现程序员对接口(interface)的不良实现。因此,如果后一个接口(interface)由足够快的阻塞实现来实现,则后一个接口(int