对于一个简单的解决方案来说可能是一个很长的问题,但这里有......
我有一个定制的 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 进行任何回调吗?我应该使用其他类型的传输技术吗?请指教!