SL调用WCF方法,默认是异步的,但有些情况,我们使用同步会来的方便些,下面的文章提供了一种方式。
http://www.codeproject.com/KB/silverlight/SynchronousSilverlight.aspx
上述提供的方式是基于服务端WCF服务接口实现,可是有时不需要WCF服务接口,下面对此进行补充:
WCF服务如下:
namespace DanielVaughan.Silverlight.Examples.Web
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class SimpleService //: ISimpleService
{
//static int connectionCount;
[OperationContract]
public string GetGreeting(string name)
{
Thread.Sleep(2000);
return "Hi " + name;
}
[OperationContract]
public List<string> GetDataList()
{
List<string> dataList = new List<string>();
Random r = new Random(DateTime.Now.Millisecond);
int max = r.Next(100);
for (int i = 0; i <max ; i++)
{
Thread.Sleep(100);
dataList.Add(i.ToString());
}
return dataList;
}
//public string InitiateConnection(string arbitraryIdentifier)
//{
// return (++connectionCount).ToString();
//}
}
}
客户端:
private void btnGetDataSynch_Click(object sender, RoutedEventArgs e)
{
this.lbData.ItemsSource = null;
ThreadPool.QueueUserWorkItem(delegate
{
DisplayMessage("同步获取数据中...");
var ws = ChannelManager.Instance.GetChannel<SimpleService>();
try
{
ObservableCollection<string> dataList = SynchronousChannelBroker.PerformAction<ObservableCollection<string>>(ws.BeginGetDataList, ws.EndGetDataList);
//if (Dispatcher.CheckAccess())
//{
// this.lbData.ItemsSource = dataList;
//}
//else
//{
// Dispatcher.BeginInvoke(delegate
// {
// this.lbData.ItemsSource = dataList;
// });
//}
DisplayData(this.lbData, dataList);
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace);
}
DisplayMessage("同步获取数据完成");
});
}
void DisplayMessage(string message)
{
DisplayText(this.tbMsg, message);
}
void DisplayText(TextBlock textBlock, string message)
{
if (Dispatcher.CheckAccess())
{
textBlock.Text = message;
}
else
{
Dispatcher.BeginInvoke(delegate
{
textBlock.Text = message;
});
}
}
void DisplayData(ListBox listBox, ObservableCollection<string> dataList)
{
if (Dispatcher.CheckAccess())
{
listBox.ItemsSource = dataList;
}
else
{
Dispatcher.BeginInvoke(delegate
{
listBox.ItemsSource = dataList;
});
}
}
分享到:
相关推荐
在IT领域,Silverlight曾是一种广泛应用于富互联网应用(RIA)开发的技术,尤其在多媒体、图形和网络通信方面。本节我们将深入探讨"(14)silverlight网络通信与开发示例"这一主题,重点关注Silverlight如何实现网络...
当我们讨论“Synchronous Silverlight与WCF同步操作”时,意味着我们正在探讨如何在Silverlight客户端上执行与WCF服务之间的同步通信。 同步操作意味着客户端在等待服务响应之前会阻塞执行,直到接收到服务的返回...
**Silverlight Socket通信详解** Silverlight,作为微软推出的一种轻量级的插件技术,主要用于在Web上创建富媒体和交互式用户体验。在Silverlight应用中,Socket通信扮演着重要的角色,它允许应用程序通过网络进行...
Silverlight还支持多种服务通信,如WCF(Windows Communication Foundation)和RIA Services,使得应用程序能够与服务器进行数据交换。此外,通过AJAX集成,可以实现页面的无刷新更新,提升用户体验。 动画和媒体...
- **数据绑定**:Silverlight中的数据绑定机制使得UI和数据模型之间可以轻松同步,简化了界面更新。 - **多线程**:为了实现即时通信,可能使用了多线程技术来处理后台任务,如接收新消息或保存聊天记录。 - **...
在Silverlight中,数据绑定允许UI元素与后台数据源自动同步,简化了开发过程。同时,Model-View-ViewModel (MVVM)设计模式被广泛采用,它分离了界面、业务逻辑和数据模型,提高了代码的可维护性和可测试性。 ### 六...
此外,通过添加摄像头和麦克风的访问功能,Silverlight 4.0为实时通信和协作应用开辟了新的可能性。 在安全性方面,Silverlight 4.0提供了更为严密的安全模型,包括沙盒环境以限制代码的执行权限,以及更强大的身份...
开发者可以借助SDK中的控件和API实现数据绑定、动画效果、网络通信等功能。 **3. x64版本的重要性** Silverlight Developer_x64.exe是64位版本的安装程序,这意味着它可以充分利用64位操作系统的性能优势,特别是...
9. **服务端与客户端通信**:ArcGIS API 3.1支持与ArcGIS Server进行通信,获取和更新地图数据,实现数据的动态更新和实时同步。 10. **数据可视化**:通过不同的符号化方式(点状、线状、面状符号),以及颜色、...
在Silverlight中,数据绑定是一个关键特性,它允许UI元素与后台数据模型自动同步。这简化了数据展示和更新的过程,使得界面动态化变得容易。此外,Silverlight还支持强大的动画系统,通过Timeline和Storyboard可以...
2. **数据绑定增强**: 新增了双向数据绑定,使得数据模型和视图之间的同步更加简单。 3. **改进的调试工具**: 提供了更好的错误定位和异常处理,让开发者更容易找到问题所在。 4. **更丰富的控件**: 增加了更多...
3. **摄像头和麦克风支持**:这一版本允许开发者集成摄像头和麦克风,创建视频聊天、在线会议等实时通信应用。 4. **OOB(Out-Of-Browser)支持**:用户无需浏览器即可运行Silverlight应用,增强了离线体验。 5. *...
数据绑定是 Silverlight 中一项非常重要的功能,它允许 UI 元素与数据源之间的自动同步。通过数据绑定,可以轻松地展示和更新数据。 #### 十二、数据与通信 - **WebClient**: 用于从远程服务器获取数据,支持 ...
Silverlight 4还增强了与WCF(Windows Communication Foundation)的集成,支持多种通信协议,如HTTP、TCP和Named Pipe,使跨域数据交换更加便捷。同时,RIA Services提供了更简单的服务端和客户端之间的数据同步...
- **案例二**:多媒体播放器开发,包括播放列表管理、音视频同步等。 - **案例三**:电子商务网站前端设计,涵盖商品展示、购物车管理等模块。 #### 六、未来发展趋势 - **跨平台移动应用**:随着移动互联网的发展...
3. **数据绑定**:Silverlight支持双向数据绑定,允许UI组件(如按钮、文本框)与后台数据模型直接关联,确保视图和模型之间的同步。在工作流中,数据绑定可以帮助实时更新用户界面,反映工作流状态的变化。 4. **...
此外,了解WCF(Windows Communication Foundation)或其他Web服务技术也是必要的,因为它们常用于Silverlight应用与服务器之间的通信。 通过分析这些源码和文档,你可以学习到如何在Silverlight中有效地实现音视频...
2. **实时通信**:Silverlight支持通过Silverlight的NetConnection类实现实时数据交换,这为视频会议中的多用户交互奠定了基础。NetConnection允许创建点对点或者多点连接,用于音视频数据的实时传输。 3. **数据...
Model-View-ViewModel(MVVM)设计模式在其中得到了广泛应用,通过`INotifyPropertyChanged`接口和`Binding`类,实现了视图和模型的双向数据同步。 8. **网络编程**:`WebClient`和`HttpWebRequest`类提供了HTTP...