Tag: asynchronous

Python中的asynchronous方法调用?

我想知道在Python中是否有用于asynchronous方法调用的库。 如果你能做到这样的话,那将是非常棒的 @async def longComputation(): <code> token = longComputation() token.registerCallback(callback_function) # alternative, polling while not token.finished(): doSomethingElse() if token.finished(): result = token.result() 或者asynchronous调用非asynchronous例程 def longComputation() <code> token = asynccall(longComputation()) 在语言核心上有一个更精炼的策略是非常棒的。 这是否被考虑?

iPhone – Grand Central调度主线程

我一直在使用成功,在我的应用程序的大中央调度,但我想知道什么是使用这样的事情的真正优势: dispatch_async(dispatch_get_main_queue(), ^{ … do stuff 甚至 dispatch_sync(dispatch_get_main_queue(), ^{ … do stuff 我的意思是,在这两种情况下,你都是在主线程上发射一个块,在应用程序运行的地方,这对减轻负载无济于事。 在第一种情况下,当模块运行时,您无法进行任何控制。 我已经看到了在你开火半秒之后被执行的情况。 第二种情况,它类似于 [self doStuff]; 对? 我想知道你们是怎么想的。

同步调用asynchronous方法

我有一个async方法: public async Task<string> GenerateCodeAsync() { string code = await GenerateCodeService.GenerateCodeAsync(); return code; } 我需要从同步方法调用这个方法。 我怎样才能做到这一点,而不必重复GenerateCodeAsync方法,以使其同步工作? 更新 但没有find合理的解决办法 但是,我看到HttpClient已经实现了这种模式 using (HttpClient client = new HttpClient()) { // async HttpResponseMessage responseAsync = await client.GetAsync(url); // sync HttpResponseMessage responseSync = client.GetAsync(url).Result; }

什么时候应该在ASP.NET MVC中使用asynchronous控制器?

我有一些担心在ASP.NET MVC中使用asynchronous操作。 它什么时候提高了我的应用程序的性能,什么时候没有 ? 在ASP.NET MVC中处处使用asynchronous动作是否好? 关于等待的方法:当我想查询一个数据库时(通过EF / NHibernate /其他ORM),我应该使用asynchronous/等待关键字? 可以使用多less次等待关键字来在一个单一的操作方法中asynchronous查询数据库?

ASP.NET MVC中的asynchronous操作是否使用.NET 4上的ThreadPool的线程

在这个问题之后,在ASP.NET MVC中使用asynchronous操作时,这让我感觉很舒服。 所以,我写了两篇博文: 我在C#5.0和ASP.NET MVC Web应用程序中采用基于任务的asynchronous编程 在ASP.NET MVC 4中使用基于任务的asynchronous编程模型(TAP)调用asynchronous数据库 我对ASP.NET MVC的asynchronous操作有太多的误解。 我总是听到这样一句话: 如果操作asynchronous运行,应用程序可以更好地扩展 而且我也听到过很多这样的句子: 如果stream量很大,最好不要asynchronous执行查询 – 消耗2个额外的线程来处理一个请求,而这些请求会将资源从其他请求中分离出来。 我认为这两句话是不一致的。 我没有太多关于如何在ASP.NET上使用线程池的信息,但我知道线程池的线程大小是有限的。 所以,第二句话必须与这个问题有关。 我想知道ASP.NET MVC中的asynchronous操作是否使用.NET 4上的ThreadPool的线程? 例如,当我们实现一个AsyncController时,应用程序结构如何? 如果我得到巨大的stream量,实施AsyncController是一个好主意吗? 有没有人可以把这个黑色的窗帘放在眼前,向我解释有关ASP.NET MVC 3(NET 4)的asynchronous处理? 编辑: 我已经阅读了下面这个文件近百次,我理解了这个主要的协议,但是我仍然有困惑,因为那里有太多不一致的评论。 在ASP.NET MVC中使用asynchronous控制器 编辑: 假设我有像下面那样的控制器动作(不是AsyncController的实现): public ViewResult Index() { Task.Factory.StartNew(() => { //Do an advanced looging here which takes a while }); return View(); } […]

可以构造函数是asynchronous的吗?

我有一个Silverlight项目,我试图在构造函数中填充一些数据: public class ViewModel { public ObservableCollection<TData> Data { get; set; } async public ViewModel() { Data = await GetDataTask(); } public Task<ObservableCollection<TData>> GetDataTask() { Task<ObservableCollection<TData>> task; //Create a task which represents getting the data return task; } } 不幸的是,我得到一个错误: 修饰符async对此项无效 当然,如果我使用标准方法进行封装并从构造函数中调用它: public async void Foo() { Data = await GetDataTask(); } 它工作正常。 同样,如果我使用旧的内部方式 GetData().ContinueWith(t […]

如何在不等待的情况下安全地调用C#中的asynchronous方法

我有一个不返回数据的async方法: public async Task MyAsyncMethod() { // do some stuff async, don't return any data } 我从另一个返回一些数据的方法调用这个: public string GetStringData() { MyAsyncMethod(); // this generates a warning and swallows exceptions return "hello world"; } 在不等待它的情况下调用MyAsyncMethod()会导致在Visual Studio中出现“ 因为此调用未被等待,当前方法在调用完成之前继续运行 ”警告。 在该警告的页面上,它指出: 只有在确定不希望等待asynchronous调用完成并且调用的方法不会引发任何exception时 ,才应该考虑抑制警告。 我确定我不想等待电话完成; 我不需要或有时间。 但是这个调用可能会引发exception。 我已经偶然发现了这个问题几次,我确定这是一个常见的问题,必须有一个共同的解决scheme。 如何在不等待结果的情况下安全地调用asynchronous方法? 更新: 对于提示我只是等待结果的人,这是响应我们的Web服务(ASP.NET Web API)上的Web请求的代码。 等待在UI上下文中保持UI线程空闲,但等待Web请求调用等待Task完成,然后再响应请求,从而无需理由地增加响应时间。

C#5asynchronousCTP:为什么在EndAwait调用之前生成的代码中内部“状态”设置为0?

昨天,我正在谈论新的C#“asynchronous”function,特别是探究生成的代码的样子,以及the GetAwaiter() / BeginAwait() / EndAwait()调用。 我们在C#编译器生成的状态机上查看了一些细节,有两个方面我们不明白: 为什么生成的类包含一个Dispose()方法和一个$__disposingvariables,它们似乎永远不会被使用(并且该类不会实现IDisposable )。 为什么在调用EndAwait()之前,内部statevariables设置为0,通常0表示“这是初始入口点”。 我怀疑第一点可以通过在asynchronous方法中做一些更有趣的事情来回答,虽然如果有人有任何进一步的信息,我会很高兴听到它。 然而,这个问题更多的是关于第二点。 这是一个非常简单的示例代码: using System.Threading.Tasks; class Test { static async Task<int> Sum(Task<int> t1, Task<int> t2) { return await t1 + await t2; } } …这是为实现状态机的MoveNext()方法生成的代码。 这是从reflection器直接复制 – 我还没有解决难以形容的variables名称: public void MoveNext() { try { this.$__doFinallyBodies = true; switch (this.<>1__state) { case 1: break; case 2: […]

WaitAll与WhenAll

Async CTP中的Task.WaitAll()和TaskEx.WhenAll()什么区别? 你能提供一些示例代码来说明不同的用例吗?

我怎样才能限制Parallel.ForEach?

我有一个Parallel.ForEach()asynchronous循环,我下载了一些网页。 我的带宽是有限的,所以我可以每次只下载x页,但是Parallel.ForEach执行所需网页的整个列表。 有没有办法在运行Parallel.ForEach时限制线程数或其他限制器? 演示代码: Parallel.ForEach(listOfWebpages, webpage => { Download(webpage); }); 真正的任务与网页无关,所以创造性的网页爬行解决scheme将无济于事。