`

Silverlight同步通信

阅读更多

 

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;
                });
            }
        }
 

 

分享到:
评论

相关推荐

    (14)silverlight网络通信与开发示例

    在IT领域,Silverlight曾是一种广泛应用于富互联网应用(RIA)开发的技术,尤其在多媒体、图形和网络通信方面。本节我们将深入探讨"(14)silverlight网络通信与开发示例"这一主题,重点关注Silverlight如何实现网络...

    Synchronous_Silverlight与WCF同步操作

    当我们讨论“Synchronous Silverlight与WCF同步操作”时,意味着我们正在探讨如何在Silverlight客户端上执行与WCF服务之间的同步通信。 同步操作意味着客户端在等待服务响应之前会阻塞执行,直到接收到服务的返回...

    Silverlight Socket通信

    **Silverlight Socket通信详解** Silverlight,作为微软推出的一种轻量级的插件技术,主要用于在Web上创建富媒体和交互式用户体验。在Silverlight应用中,Socket通信扮演着重要的角色,它允许应用程序通过网络进行...

    Silverlight完美入门.rar

    Silverlight还支持多种服务通信,如WCF(Windows Communication Foundation)和RIA Services,使得应用程序能够与服务器进行数据交换。此外,通过AJAX集成,可以实现页面的无刷新更新,提升用户体验。 动画和媒体...

    silverlight 网页聊天系统

    - **数据绑定**:Silverlight中的数据绑定机制使得UI和数据模型之间可以轻松同步,简化了界面更新。 - **多线程**:为了实现即时通信,可能使用了多线程技术来处理后台任务,如接收新消息或保存聊天记录。 - **...

    Silverlight教程

    在Silverlight中,数据绑定允许UI元素与后台数据源自动同步,简化了开发过程。同时,Model-View-ViewModel (MVVM)设计模式被广泛采用,它分离了界面、业务逻辑和数据模型,提高了代码的可维护性和可测试性。 ### 六...

    Silverlight 4.0

    此外,通过添加摄像头和麦克风的访问功能,Silverlight 4.0为实时通信和协作应用开辟了新的可能性。 在安全性方面,Silverlight 4.0提供了更为严密的安全模型,包括沙盒环境以限制代码的执行权限,以及更强大的身份...

    Silverlight Developer5.zip

    开发者可以借助SDK中的控件和API实现数据绑定、动画效果、网络通信等功能。 **3. x64版本的重要性** Silverlight Developer_x64.exe是64位版本的安装程序,这意味着它可以充分利用64位操作系统的性能优势,特别是...

    ArcGIS 3.1 for Silverlight

    9. **服务端与客户端通信**:ArcGIS API 3.1支持与ArcGIS Server进行通信,获取和更新地图数据,实现数据的动态更新和实时同步。 10. **数据可视化**:通过不同的符号化方式(点状、线状、面状符号),以及颜色、...

    Silverlight漂亮界面主键

    在Silverlight中,数据绑定是一个关键特性,它允许UI元素与后台数据模型自动同步。这简化了数据展示和更新的过程,使得界面动态化变得容易。此外,Silverlight还支持强大的动画系统,通过Timeline和Storyboard可以...

    Silverlight5 开发环境不素

    2. **数据绑定增强**: 新增了双向数据绑定,使得数据模型和视图之间的同步更加简单。 3. **改进的调试工具**: 提供了更好的错误定位和异常处理,让开发者更容易找到问题所在。 4. **更丰富的控件**: 增加了更多...

    silverlight 4

    3. **摄像头和麦克风支持**:这一版本允许开发者集成摄像头和麦克风,创建视频聊天、在线会议等实时通信应用。 4. **OOB(Out-Of-Browser)支持**:用户无需浏览器即可运行Silverlight应用,增强了离线体验。 5. *...

    silverlight 学习资料

    数据绑定是 Silverlight 中一项非常重要的功能,它允许 UI 元素与数据源之间的自动同步。通过数据绑定,可以轻松地展示和更新数据。 #### 十二、数据与通信 - **WebClient**: 用于从远程服务器获取数据,支持 ...

    Silverlight 4 API

    Silverlight 4还增强了与WCF(Windows Communication Foundation)的集成,支持多种通信协议,如HTTP、TCP和Named Pipe,使跨域数据交换更加便捷。同时,RIA Services提供了更简单的服务端和客户端之间的数据同步...

    SilverLight 4开发教程

    - **案例二**:多媒体播放器开发,包括播放列表管理、音视频同步等。 - **案例三**:电子商务网站前端设计,涵盖商品展示、购物车管理等模块。 #### 六、未来发展趋势 - **跨平台移动应用**:随着移动互联网的发展...

    silverlight 工作流数据库

    3. **数据绑定**:Silverlight支持双向数据绑定,允许UI组件(如按钮、文本框)与后台数据模型直接关联,确保视图和模型之间的同步。在工作流中,数据绑定可以帮助实时更新用户界面,反映工作流状态的变化。 4. **...

    Silverlight音视频捕获讲解+源码

    此外,了解WCF(Windows Communication Foundation)或其他Web服务技术也是必要的,因为它们常用于Silverlight应用与服务器之间的通信。 通过分析这些源码和文档,你可以学习到如何在Silverlight中有效地实现音视频...

    Silverlight视频会议

    2. **实时通信**:Silverlight支持通过Silverlight的NetConnection类实现实时数据交换,这为视频会议中的多用户交互奠定了基础。NetConnection允许创建点对点或者多点连接,用于音视频数据的实时传输。 3. **数据...

    Silverlight 3 完整示例(包含各种交互,注释完整)

    Model-View-ViewModel(MVVM)设计模式在其中得到了广泛应用,通过`INotifyPropertyChanged`接口和`Binding`类,实现了视图和模型的双向数据同步。 8. **网络编程**:`WebClient`和`HttpWebRequest`类提供了HTTP...

Global site tag (gtag.js) - Google Analytics