可能是一个简单的解决方案的长问题,但这里有...如何在客户端知道HTTP处理程序何时完成处理?
我有一个自定义的silverlight控件,用于选择多个文件并将它们发送到服务器。它使用WebCLient控件的OpenWriteAsync方法将文件发送到常规处理程序(FileReciever.ashx)。
基本上,Silverlight的代码做这样的每个文件:
WebClient client = new WebClient();
client.OpenWriteCompleted += (sender, e) =>
{
PushData(data, e.Result);
e.Result.Close();
data.Close();
};
client.OpenWriteAsync(handlerUri);
服务器侧处理程序仅读取输入流,然后做一些更多的处理与所得到的字节数组。
问题是客户端OpenWriteCompleted是在所有数据通过线路发送后立即完成的。然后我的代码将继续使用下一个文件。我真正想要的是等到ASHX处理程序完成它的所有处理请求。我怎么做? WebClient上的任何等待机制?我可以在处理程序中的HttpContext上做任何回调?我应该使用其他类型的转移技术吗?请指教!
像这样的东西可能会工作 - 但我希望有另一种方式,内置的东西,不涉及像这样的单独的服务。 – 2008-09-30 11:28:05