基于AutoResetEvent的同步实现
利用AutoResetEvent的线程等待特性,可以折中实现Silverlight同步调用远端WCF服务。其原理就是在Silverlight发起异步调用远端WCF的时候进行线程阻塞,比记录异步调用远端WCF服务接口的完成事件,当异步调用完成后就终止线程阻塞,从而获取状态事件对象中或得调用远程接口所返回的结果。由于视图模型对象实现了INotifyPropertyChanged接口能够及时的更新界面元素,以此间接的就实现了同步方式调用。
public class AsyncCallStatus<T> { public AsyncCallStatus() { } public T CompletedEventArgs { get; set; } } public class BookFacade { private AutoResetEvent autoResetEvent = new AutoResetEvent(false); public void GetBook(BookViewModel viewModel) { if (viewModel == null) { throw new ArgumentNullException("viewModel", "参数不能为空。"); } DataService.DataServiceClient client = new DataService.DataServiceClient(); client.GetBookCompleted += client_GetBookCompleted; var status = new AsyncCallStatus<GetBookCompletedEventArgs>(); client.GetBookAsync(status); //阻塞线程 autoResetEvent.WaitOne(); if (status.CompletedEventArgs.Error != null) { throw status.CompletedEventArgs.Error; } var book = status.CompletedEventArgs.Result; viewModel.ID = book.ID; viewModel.Name = book.Name; viewModel.Author = book.Author; viewModel.Price = book.Price; } private void client_GetBookCompleted(object sender, GetBookCompletedEventArgs e) { var status = e.UserState as AsyncCallStatus<GetBookCompletedEventArgs>; status.CompletedEventArgs = e; //终止线程阻塞 autoResetEvent.Set(); } }
相关推荐
Silverlight与WCF同步操作,通过修改实体属性,或回调函数,返回值结果或状态。
source-synchronous 源同步原理
同步函数编程synchronous functional programming
synchronous_socket_chat: 基于同步套接字的聊天软件编译环境:vc6.0 操作系统:xp 有问题请email:shockwave1@163.com
synchronous 数据同步系统,可用于同步 Postgresql Hadoop Mysql 文件等数据
同步多室音频播放器 Synchronous multiroom audio player
代码本身看起来像是同步调用,而在内部它使用异步调度。 特征 线程池。可以使用不同用途的不同池。 异步互斥体(也称为单独互斥体),称为无阻塞无死锁同步。 传送和传送。提供在不同线程池或调度程序之间传输执行...
BMP Bit-synchronous Mapping Procedure 比特同步映射规程
React Native的同步存储_Synchronous_storage_for_React_Native. html javascript
同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)。所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。...
Control of Permanent Magnet Synchronous Motors Sadegh Vaez-Zadeh (作者) pages:357
现代永磁同步电机控制原理及MATLAB仿真,第一章,永磁同步电机模型
有关同步电机的matlab仿真,非常有用
基于matlab的同步发电机模型,得到了清晰的同步发电机运行情况下的电压波形图。
s7200PLC的同步电动机实时状态监控程序
异步函数同步_Make_an_asynchronous_function_synchronous_javascript
同步机块在发电机或电动机模式运营。操作模式是由机械功率的信号(阳性发电机模式,不利于运动模式。
Very fast synchronous C++17 logging library 快速的同步C++17日志库
该程序实现了巴克码(1110010)作群同步码的识别器。
同步电机abc系统仿真,matlab源程序