承上,给出基于事件异步模式 + 请求、应答模式 结合的异步服务调用版本
关键代码段
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
基于事件异步服务调用
void work()
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
{
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
var res =
new indata();
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
res.s = richTextBox1.Text;
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
ser.workAsync(res);
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
ser.workCompleted +=
new EventHandler<workCompletedEventArgs>(ser_workCompleted);
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
}
void ser_workCompleted(
object sender, workCompletedEventArgs e)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
{
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
Form1.global.write(e.Result.s);
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
}
说明
调用结果触发事件会在 UI 线程执行,无需调用 UI 异步执行函数
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
iwriter 成员
#region iwriter 成员
public
void write(
string s)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
{
this.richTextBox1.Text = s;
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
}
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
#endregion
转载于:https://blog.51cto.com/szgamer/183204