Tag: android asynctask

在异步请求中使用超时回调

之前我问过这个问题,但我打算用提出的解决方案来完成这个问题并提出另一个问题。 我正在使用这个类来创建异步WebRequest : class HttpSocket { public static void MakeRequest(Uri uri, Action responseCallback) { WebRequest request = WebRequest.Create(uri); request.Proxy = null; Task asyncTask = Task.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null); ThreadPool.RegisterWaitForSingleObject((asyncTask as IAsyncResult).AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), request, 1000, true); asyncTask.ContinueWith(task => { WebResponse response = task.Result; Stream responseStream = response.GetResponseStream(); responseCallback(new RequestCallbackState(response.GetResponseStream())); responseStream.Close(); response.Close(); }); } private static void […]

AsyncCTP:创建一个IAwaitable类

我发现自己想要实现一个IAwaitable类(在不阻塞线程的情况下实现异步调用)。 我安装了最新版本的AsyncCTP,编译器说我需要一个IsCompleted()成员。 好的,所以CTP预览已经移动了一点(我明白了,就像预览一样) 问题:AsyncCTP语言扩展现在期待什么接口? 问题:在这一切中,我假设我可以通过lamda / delegate向“IAwaitable”发出信号? 这可能吗? 我们称之为EndAwait吗? intellisense建议你调用EndAwait来检索结果……这听起来不对。 有任何想法吗? 到目前为止,我发现的所有示例都是针对AsyncCTP库已经实现的function,例如: await new WebClient().DownloadStringTaskAsync(uri).ConfigureAwait(false); 来自101 AsyncSamplesCS 背景: 我发现自己在Jon Skeets页面上(再次)看着这个例子 using System; class Test { static async void Main() { await new Awaitable(); } } class Awaitable { public Awaiter GetAwaiter() { return new Awaiter(); } } class Awaiter { public bool BeginAwait(Action continuation) { […]