- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试发送 url 请求并异步获取响应,但是当我将 .fromAsync 方法与 .ContinueWith 方法一起使用时,任务状态永远不会从 WaitingForActivation 更改为运行。我试过使用 task.Start() 但它不能与 ContinueWith 一起使用。我将如何在我的代码中将任务状态更改为正在运行?
public void pageCheck(){
IAsyncResult asyncResult;
Uri uri = new Uri(TempURL); //TempUrl is assigned a string beforehand
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(uri);
try{
Task<WebResponse> task = Task.Factory.FromAsync(
myReq.BeginGetResponse,
asyncResult => myReq.EndGetResponse(asyncResult),
(Object)null);
task.ContinueWith(t =>
{
var responseCode = (HttpWebResponse)t.Result;
ReadStreamFromResponse(t.Result);
if(responseCode.StatusCode == HttpStatusCode.OK){
//updatestatus
reponseCode.Close();
}
}
);
}
//catch exceptions
}
private String ReadStreamFromResponse(WebResponse response) {
StreamReader responseStream = new StreamReader(response.GetResponseStream());
string str = responseStream.ReadToEnd();
return str;
}
最佳答案
Task.Factory.FromAsync
自动安排任务。来自 the documentation :
The beginMethod delegate is started on the thread that FromAsync is running on. This method throws any exceptions thrown by the beginMethod.
您通常会在没有 lambda 的情况下编写此代码:
Task<WebResponse> task = Task<WebResponse>.Factory.FromAsync(
myReq.BeginGetResponse,
myReq.EndGetResponse,
null);
如果您使用的是 .NET 4.5 和 C# 5,则可以使用 WebRequest.GetResponseAsync
也直接。
关于c# - 使用 .FromAsync 任务状态 = WaitingForActivation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17408790/
我正在开发一个 C# 应用程序并使用一些异步调用。我必须使用给定供应商的 SDK 才能集成到供应商平台中。看起来 SDK 异步方法基于 5.0 之前的 C# 并使用 APM 模型而不是 TPM(我的大
我有两个任务 t1和 t2我从使用开始/结束异步模型设计的旧 API 生成,如下所示。然而,我严格想要一个接一个地运行它们。 (这是 Azure 表存储 API) Task t1 = Task.Fac
我有以下功能 public static Task SendTaskAsync(this Socket socket, byte[] buffer, int offset, int size, Soc
好吧,试图理解 Rx,有点迷失在这里。 FromAsyncPattern 现已弃用,因此我采用了 here 中的示例(使用 Rx 点亮任务部分),它有效,我只是做了一些更改,不使用 await 只是等
我从 WinForm 进行了测试,因为我听说控制台应用程序在 async 方面撒谎: List lstFiles = new List(); lstFiles = FillList()
我正在尝试发送 url 请求并异步获取响应,但是当我将 .fromAsync 方法与 .ContinueWith 方法一起使用时,任务状态永远不会从 WaitingForActivation 更改为运
我正在开发一个连接尝试超时应该是可配置的应用程序。 如果您看一下下面的代码,您会意识到我正在尝试做的事情:WAITING 20 毫秒(目前已硬编码),如果可以建立连接,则调用 onConnected
我有一个具有以下签名的异步方法: IAsyncResult BeginGetMyNumber(string foo, string bar, string bat, int bam, AsyncCal
详见 TPL and Traditional .NET Framework Asynchronous Programming MSDN 文章和 Stephen Toub 的 Tasks and the
有人可以解释为什么即使到达流的末尾,下面的 AsObservable 方法也会创建一个无限循环吗? public static class StreamExt { public static
有没有人可以指导何时使用其中一种方法而不是另一种方法。他们似乎做同样的事情,因为他们将 TPL Task 转换为 Observable。 Observable.FromAsync 似乎支持取消标记,这
我是 C# 的新手,所以请多多包涵。 我正在尝试了解 Task FromAsync 的工作原理。 var task1 = Task.Factory.FromAsync(Foo1, ...); //w
如何将 Task.Factory.FromAsync 工厂用于通过“out”参数返回多个值的结束方法? begin 方法具有以下签名: public virtual System.IAsyncResu
我有一个返回任务的方法,例如: public static Task SendAsync(this Socket socket, byte[] buffer, int offset, int coun
我想知道在方法的阻塞版本上使用 TPL TaskFactory.FromAsync 和使用 TaskFactory.StartNew 之间是否存在任何性能影响。我正在编写一个 TCP 服务器,它支持不
问题可以用 MSDN 的以下引述来描述: The CommandTimeout property will be ignored during asynchronous method calls su
我正在尝试测试一些依赖 Task 进行后台计算的类(从网络位置检索数据)。该类获取一个未启动的任务实例,添加一个 ContinueWith 方法,然后在该任务上调用 Start。像这样的东西: pri
我有以下扩展方法用于对 WebRequest 对象使用异步调用。 public static Task GetReponseAsync(this WebRequest request) {
我在测试使用 Observable.FromAsync() 的类时遇到问题和 Observable.Switch() .它所做的是等待触发器 observable 产生一个值,然后它开始一个异步操作,
我有以下代码行用于从 NetworkStream 异步读取: int bytesRead = await Task.Factory.FromAsync(this.stream.BeginRead, t
我是一名优秀的程序员,十分优秀!