基于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(); } }
相关推荐
当我们讨论“Synchronous Silverlight与WCF同步操作”时,意味着我们正在探讨如何在Silverlight客户端上执行与WCF服务之间的同步通信。 同步操作意味着客户端在等待服务响应之前会阻塞执行,直到接收到服务的返回...
源同步(Source-Synchronous)是一种数字接口设计方法,主要用于高速数据传输系统中,例如DDR(Double Data Rate)内存、串行ATA(SATA)和PCI Express等。在这些系统中,数据的发送方不仅发送数据,还同时发送时钟...
2. **同步(Synchronous)**:在同步套接字编程中,当调用发送或接收数据的函数时,程序会暂停,直到操作完成。这种方式简单易懂,但效率较低,因为程序可能会因为等待I/O操作而浪费时间。 **聊天软件设计** 1. **...
1. **数据迁移**:在升级数据库版本或更换数据库服务提供商时,`synchronous` 可以帮助平滑过渡。 2. **备份与恢复**:定期同步数据至备份存储,确保数据安全。 3. **实时分析**:将实时业务数据同步至大数据平台,...
然而,有时我们可能需要同步调用Web服务,这就是SJAX(Synchronous Javascript and XML)的用武之地。 **SJAX的概念** SJAX是JavaScript对Web服务的一种同步调用方式。与AJAX不同,它不使用异步请求,而是等待...
同步套接字(Synchronous Socket)是一种网络编程中的通信机制,主要用于客户端和服务器之间的数据交换。同步套接字的工作方式是阻塞式的,即服务器在等待客户端连接或接收数据时,会暂停当前的执行流程,直到有数据...
3. **同步(Synchronous)**:同步通信意味着发送方必须等待接收方的响应才能继续执行。在同步套接字服务器中,这意味着服务器在接收并处理完一个客户端请求后,才会接受下一个客户端的连接。 4. **服务器端程序**...
总结来说,"cjx.zip_synchronous motor_同步电机"是一个关于同步电机MATLAB仿真的项目,包含了cjx.mdl模型文件。这个模型可能涵盖了同步电机的电气和机械模型、控制系统以及负载模型,提供了分析和优化电机性能的...
同步函数编程(Synchronous Functional Programming)是一种编程范式,它结合了函数式编程的特性与同步执行的概念。在函数式编程中,程序被视为一系列计算,而不是状态改变的过程,而同步执行意味着这些计算按照顺序...
在深入探讨《Analysis of Synchronous Machines(2nd,2012)》一书中关于永磁同步电机(PMSM)的知识点之前,我们先简要回顾一下同步电机的基本概念。同步电机是一种交流电机,其转子的速度与定子磁场的旋转速度保持...
BMP Bit-synchronous Mapping Procedure 比特同步映射规程 BMP(Bit-synchronous Mapping Procedure)是指比特同步映射规程,是一种信号映射技术,用于将客户信号映射到OTN(Optical Transport Network)网络中的...
半同步复制(Semi-Synchronous Replication)是介于异步复制和同步复制之间的一种复制方式。在MySQL 5.7.2版本之前,默认是半同步复制,并通过一个参数值after_commit来实现。在这种模式下,事务在提交到主服务器的...
同步套接字(Synchronous Socket)是网络编程中一种基础且重要的通信机制,它基于TCP/IP协议栈,用于实现两台计算机之间的数据传输。在这个场景中,我们讨论的是一个已经测试成功的服务器和客户端程序,这通常涉及到...
总的来说,"TBJ.zip_synchronous motor_同步电动机"文件包中的内容揭示了一个利用S7-200 PLC进行同步电动机状态监控的实例,涵盖了同步电动机的原理、PLC控制技术以及具体的编程实践,为深入学习和应用提供了宝贵的...
这本书详细讨论了永磁同步电机(Permanent Magnet Synchronous Motors,简称PMSM)的控制原理和方法。作者是来自德黑兰大学电气与计算机工程学院的教授,他在电机驱动领域有着深厚的学术造诣和丰富的实践经验。 在...
逆变器模仿同步发电机技术是一项关键的电力电子技术,通过模拟同步发电机(Synchronous Generator, SG)的行为,使得逆变器可以控制其输出的电压和电流,以实现与电力系统中其他设备的协调配合。这种技术的核心在于...
代码本身看起来像是同步调用,而在内部它使用异步调度。 特征 线程池。可以使用不同用途的不同池。 异步互斥体(也称为单独互斥体),称为无阻塞无死锁同步。 传送和传送。提供在不同线程池或调度程序之间传输执行...
React Native的同步存储是开发移动应用时处理本地数据的关键组件。在React Native框架中,开发者可以使用各种同步存储解决方案来保存应用程序的状态或者用户数据,即使在离线状态下也能访问这些数据。本文将深入探讨...
《同步电动机与同步发电机在MATLAB中的模拟分析》 同步电机,作为一种广泛应用于电力系统、工业驱动和电力电子领域的关键设备,具有运行稳定、效率高、调速范围广等优点。MATLAB作为强大的数学计算及仿真软件,为...