Silverlight+WCF实现聊天功能

这是来公司做的第二个项目实例。最近在学习WCF方面的知识,看了一些资料,于是做了这个可以实现聊天功能的项目实例。

新建WCF服务和Silverlight项目就不说了主要来看代码:

WCF服务契约与数据契约:

 <span style="color:#FF0000;"> [ServiceContract(CallbackContract = typeof(IMessageCallBack))]</span>
public interface IMessageManage
    {

        [OperationContract]

        bool SendMessage(MessageInfo msg);

        [OperationContract]

        bool RequestMessage(UserInfo user);

        [OperationContract]
       
        List<UserInfo> GetUserInfo();

        [OperationContract]
        
        bool CreateUser(UserInfo user);

    }
 public interface IMessageCallBack
    {
<span style="color:#FF0000;">
        [OperationContract(IsOneWay = true)]

        void GetMessage(MessageInfo message);</span>

    }
<pre name="code" class="csharp"><span style="color:#FF0000;">[DataContract]</span>
 public class MessageInfo { [DataMember] public UserInfo FromUser { get; set; } [DataMember] public UserInfo ToUser { get; set; } [DataMember] public string Content { get; set; } [DataMember] public DateTime SendTime { get; set; } }[DataContract] public class UserInfo { [DataMember] public int Id { get; set; } [DataMember] public string Name { get; set; } }

 WCF的实现: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
<span style="background-color: rgb(255, 0, 0);">using WcfModel;</span>


namespace WcfService
{
    public class MessageService : IMessageManage
    {


        private static Dictionary<int, IMessageCallBack> DicCallChannel = new Dictionary<int, IMessageCallBack>();

        public static List<UserInfo> getuserTemp = new List<UserInfo>();

        private int UserId = 0;

        public bool CreateUser(UserInfo user)
        {
            if (getuserTemp == null)
                getuserTemp = new List<UserInfo>();
            
            bool r = false;
            foreach (UserInfo list in getuserTemp)
            {
                if (list.Id.Equals(user.Id))
                {
                    r = true;
                }
            }
            if (r)
            {
                return false;
            }
            getuserTemp.Add(user);
            return true;

        }

        public bool SendMessage(MessageInfo msg)
        {



            if (DicCallChannel.Keys.Contains(msg.ToUser.Id))
            {

                DicCallChannel[msg.ToUser.Id].GetMessage(msg);

                return true;

            }

            return false;

        }

        public bool RequestMessage(UserInfo user)
        {



            IMessageCallBack channel = OperationContext.Current.GetCallbackChannel<IMessageCallBack>();

            if (!DicCallChannel.Keys.Contains(user.Id))
            {



                DicCallChannel.Add(user.Id, channel);




                UserId = user.Id;

                OperationContext.Current.Channel.Closing += Channel_Closing;

            }

            return true;

        }

        void Channel_Closing(object sender, EventArgs e)
        {

            if (DicCallChannel.Keys.Contains(UserId))
            {

                DicCallChannel.Remove(UserId);

            }

        }
   
        public List<UserInfo> GetUserInfo()
        {
            
            return getuserTemp;


        }





    }
}
MainPage前台代码:

<UserControl x:Class="SilverlightApplication.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d"

    d:DesignHeight="600" d:DesignWidth="800" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">

    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" >
        <Grid x:Name="LayoutRoot" Background="White" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" Height="700">

            <StackPanel  Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" Height="456" Margin="286,92,259,152" Width="228">

                <!--<Button x:Name="btnCreateUser1" Content="Create User1" Width="100" Margin="0,10,0,0" Click="btnCreateUser1_Click" />

            <Button x:Name="btnCreateUser2" Content="Create User2" Width="100" Margin="0,10,0,0" Click="btnCreateUser2_Click" />-->
                <telerik:GroupBox Height="300" Name="groupBox2" Width="200" Header="收">
                    <TextBox x:Name="txtContentRecord" Width="182" Height="261" IsReadOnly="True" Margin="0,10,0,0" TextWrapping="Wrap" />

                </telerik:GroupBox>


                <telerik:GroupBox Height="107" Name="groupBox3" Width="200" Header="发" Margin="0,30,0,0">
                    <StackPanel>
                        <TextBox x:Name="txtContent" Width="182" Height="30" Margin="0,10,0,0"  AllowDrop="False" AcceptsReturn="True" TextWrapping="Wrap"   />
                        <Button x:Name="btnSend" Content="Send" Width="100" Margin="0,10,0,0" Click="btnSend_Click">

                        </Button>
                    </StackPanel>
                </telerik:GroupBox>


            </StackPanel>
            <StackPanel Margin="27,92,514,152">
                <!--<ListBox Width="100" Height="60" x:Name="lstgu" ></ListBox>-->
                <!--<TextBox x:Name="txtGU" Width="100" Height="100"></TextBox>-->


                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10,0,0" Width="202" Height="209">
                    <telerik:GroupBox Height="180" Name="groupBox4" Width="118" Header="User List" Margin="10,10,0,0">
                        <sdk:DataGrid DataContext="{Binding}" AutoGenerateColumns="False" Height="125" Name="dataGrid1" Width="89" Margin="0,10,0,0" SelectionChanged="dataGrid1_SelectionChanged" IsReadOnly="True">
                            <sdk:DataGrid.Columns>
                                <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Id" Width="Auto" Binding="{Binding Id}" />
                                <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" CanUserSort="True" Header="Name" Width="Auto" Binding="{Binding Name}"  />
                            </sdk:DataGrid.Columns>
                        </sdk:DataGrid>
                    </telerik:GroupBox>
                    <Button x:Name="btnRefreshUser" Click="btnRefreshUser_Click"  Width="63" Height="20" Margin="10,0,0,0" IsEnabled="False">Refresh</Button>
                </StackPanel>


                <telerik:GroupBox   Height="116" Name="groupBox1" Width="202" Header="User Login">
                    <StackPanel>
                        <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,10,0,0">
                            <TextBlock TextAlignment="Center" VerticalAlignment="Center">Id:</TextBlock>
                            <TextBox x:Name="CurrentId" Width="60" Margin="21,0,0,0" ></TextBox>
                        </StackPanel>
                        <StackPanel  Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                            <TextBlock TextAlignment="Center" VerticalAlignment="Center">Name:</TextBlock>
                            <TextBox x:Name="CurrentName" Width="60" ></TextBox>
                        </StackPanel>
                        <StackPanel x:Name="login">
                            <Button x:Name="Login" Click="Login_Click" Width="95" Margin="0,10,0,0">Login</Button>
                        </StackPanel>
                    </StackPanel>
                </telerik:GroupBox>
                <!--<telerik:GroupBox Height="134" Name="groupBox5" Width="202" Header="Create User">
                    <StackPanel>
                        <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,10,0,0">
                            <TextBlock TextAlignment="Center" VerticalAlignment="Center">Id:</TextBlock>
                            <TextBox x:Name="CreateUserId" Width="60" Margin="21,0,0,0"></TextBox>
                        </StackPanel>
                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                            <TextBlock TextAlignment="Center" VerticalAlignment="Center">Name:</TextBlock>
                            <TextBox x:Name="CreateUserName" Width="60"></TextBox>
                        </StackPanel>
                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10,0,0">
                            <Button x:Name="btnCreateUser" Click="btnCreateUser_Click">CreateUser</Button>
                        </StackPanel>
                    </StackPanel>
                </telerik:GroupBox>-->
            </StackPanel>

        </Grid>
    </ScrollViewer>

</UserControl>
MainPage后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using SilverlightApplication.MessageService;
using System.ComponentModel;
using System.Collections.ObjectModel;


namespace SilverlightApplication
{

    public partial class MainPage : UserControl
    {


        MessageInfo message = new MessageInfo();

        public  List<UserInfo> listuser = new List<UserInfo>();
        //string p;
        //string p_2;
        //string p_3;

        //bool refresh = false;


        public MainPage()
        {

            InitializeComponent();
            getlistuser();
            //UserInfo rtouser = new UserInfo();
            //rtouser.Id=Convert.ToInt32(this.CurrentId.Text);
            //rtouser.Name = this.CurrentName.Text;

        }

        //public MainPage(string p, string p_2,string p_3)
        //{

        //    InitializeComponent();
        //    this.p = p;
        //    this.p_2 = p_2;
        //    this.CurrentId.Text = p;
        //    this.CurrentName.Text = p_2;
        //    this.txtContentRecord.Text = p_3;
        //    rgetlistuser();
        //    this.CurrentId.IsReadOnly = true;
        //    this.CurrentName.IsReadOnly = true;
        //    this.login.Visibility = Visibility.Collapsed;
        //}

        

        public void getlistuser()
        {
            MessageManageClient client = new MessageManageClient();
            client.GetUserInfoCompleted += new EventHandler<GetUserInfoCompletedEventArgs>(client_GetUserInfoCompleted);
            client.GetUserInfoAsync();
        }
        void client_GetUserInfoCompleted(object sender, GetUserInfoCompletedEventArgs e)
        {
            if (e.Result != null)
            {
                foreach (var list in e.Result)
                {
                    listuser.Add(list);
                }
                //this.dataGrid1.ItemsSource = listuser;
            }
            else
            {
                MessageBox.Show("当前用户列表为空!");
            }
        }


        //public void rgetlistuser()
        //{
        //    ChatServiceClient client = new ChatServiceClient();
        //    client.GetUserInfoCompleted += new EventHandler<GetUserInfoCompletedEventArgs>(client_GetUserInfoCompletedR);
        //    client.GetUserInfoAsync();
        //}
        //void client_GetUserInfoCompletedR(object sender, GetUserInfoCompletedEventArgs e)
        //{
        //    listuser.Clear();
        //    if (e.Result != null)
        //    {
        //        foreach (var list in e.Result)
        //        {
        //            listuser.Add(list);
        //        }
        //        this.dataGrid1.ItemsSource = listuser;

        //    }
        //    else
        //    {
        //        MessageBox.Show("当前用户列表为空!");
        //    }
        //}


        //private ObservableCollection<UserInfo> _listuser = null;





        //private void btnCreateUser1_Click(object sender, RoutedEventArgs e)
        //{


        //    this.btnCreateUser2.IsEnabled = false;
        //    ChatServiceClient client = new ChatServiceClient();



        //    UserInfo formUser = new UserInfo()

        //    {

        //        Id = 123,

        //        Name = "张三"


        //    };
        //    //creatuser1 = formUser;
        //    //getuser.Add(formUser);

        //    UserInfo toUser = new UserInfo()

        //    {

        //        Id = 234,

        //        Name = "李四",

        //    };



        //    message.FromUser = formUser;

        //    message.ToUser = toUser;

        //    message.Content = txtContent.Text;

        //    message.SendTime = DateTime.Now;

        //    client.RequestMessageCompleted += new EventHandler<RequestMessageCompletedEventArgs>(client_RequestMessageCompleted);

        //    client.RequestMessageAsync(formUser);

        //    //client.GetUserInfoAsync(formUser);

        //    client.GetMessageReceived += new EventHandler<GetMessageReceivedEventArgs>(client_GetMessageReceived);








        //    //client.RequestMessageCompleted += (rs, re) =>
        //    //{

        //    //    if (re.Result)
        //    //    {

        //    //        MessageBox.Show("用户" + formUser.Id + "创建成功!");

        //    //    }

        //    //};

        //    //client.GetMessageReceived += (gs, ge) =>
        //    //{

        //    //    if (ge.Error == null)
        //    //    {

        //    //        txtContentRecord.Text += "\r" + "来自:" + ge.message.FromUser.Name + ",内容:" + ge.message.Content + ",时间:" + ge.message.SendTime.ToShortTimeString();

        //    //    }

        //    //};






        //}



        //void client_RequestMessageCompleted(object sender, RequestMessageCompletedEventArgs e)
        //{
        //    if (e.Result)
        //    {

        //        MessageBox.Show("通道创建成功!");

        //    }
        //}



        //void client_GetMessageReceived(object sender, GetMessageReceivedEventArgs e)
        //{
        //   if (e.Error == null)
        //        {

        //            //txtContentRecord.Text +="\r\n"+ "来自:" + e.message.FromUser.Name + ",内容:" + e.message.Content + ",时间:" + e.message.SendTime.ToShortTimeString()+"\r\n";
        //            if (this.txtContentRecord.Text == "")
        //            {
        //                txtContentRecord.Text +=e.message.FromUser.Name + e.message.SendTime.ToShortTimeString() + ":"+"\r\n" + e.message.Content ;

        //            }
        //            else 
        //            {
        //                txtContentRecord.Text += "\r\n" + e.message.FromUser.Name + e.message.SendTime.ToShortTimeString() + ":" + "\r\n" + e.message.Content;

        //            }


        //        }
        //}




        //private void btnCreateUser2_Click(object sender, RoutedEventArgs e)
        //{
        //    this.btnCreateUser1.IsEnabled = false;
        //    ChatServiceClient client = new ChatServiceClient();

        //    UserInfo formUser = new UserInfo()

        //    {

        //        Id = 234,

        //        Name = "李四"

        //    };

        //    //creatuser2 = formUser;
        //    //getuser.Add(formUser);
        //    UserInfo toUser = new UserInfo()

        //    {

        //        Id = 123,

        //        Name = "张三",

        //    };



        //    message.FromUser = formUser;

        //    message.ToUser = toUser;

        //    message.Content = txtContent.Text;

        //    message.SendTime = DateTime.Now;

        //    client.RequestMessageCompleted += new EventHandler<RequestMessageCompletedEventArgs>(client_RequestMessageCompleted1);


        //    client.RequestMessageAsync(formUser);

        //    client.GetMessageReceived += new EventHandler<GetMessageReceivedEventArgs>(client_GetMessageReceived1);
        //    //client.GetUserInfoAsync(formUser);

        //    //client.RequestMessageCompleted += (rs, re) =>
        //    //{

        //    //    if (re.Result)
        //    //    {

        //    //        MessageBox.Show("用户" + formUser.Id + "创建成功!");

        //    //    }

        //    //};

        //    //client.GetMessageReceived += (gs, ge) =>
        //    //{

        //    //    if (ge.Error == null)
        //    //    {

        //    //        txtContentRecord.Text += "\r" + "来自:" + ge.message.FromUser.Name + ",内容:" + ge.message.Content + ",时间:" + ge.message.SendTime.ToShortTimeString();

        //    //    }

        //    //};


        //}

        private void btnSend_Click(object sender, RoutedEventArgs e)
        {
            if (this.txtContent.Text == "" || this.dataGrid1.SelectedItem == null)
            {
                MessageBox.Show("消息内容为空或没有选择聊天对象!");
            }
            else
            {

                MessageManageClient client = new MessageManageClient();


                message.Content = txtContent.Text;

                message.SendTime = DateTime.Now;
                client.SendMessageCompleted += new EventHandler<SendMessageCompletedEventArgs>(client_SendMessageCompleted);
                client.SendMessageAsync(message);


                //client.SendMessageCompleted += (ds, de) =>
                //{

                //    if (de.Result)
                //    {

                //        MessageBox.Show("发送成功!");

                //    }

                //    else
                //    {

                //        MessageBox.Show("发送失败!");

                //    }

                //};




            }

        }

        void client_SendMessageCompleted(object sender, SendMessageCompletedEventArgs e)
        {
            if (e.Result)
            {
                if (this.txtContentRecord.Text == "")
                {
                    this.txtContentRecord.Text += this.CurrentName.Text + DateTime.Now.ToShortTimeString() + ":" + " \r\n" + this.txtContent.Text;
                    this.txtContent.Text = "";
                    MessageBox.Show("发送成功!");
                }
                else
                {
                    this.txtContentRecord.Text += "\r\n" + this.CurrentName.Text + DateTime.Now.ToShortTimeString() + ":" + " \r\n" + this.txtContent.Text;
                    this.txtContent.Text = "";
                    MessageBox.Show("发送成功!");
                }


            }
            else
            {
                MessageBox.Show("发送失败!");
                this.txtContent.Text = "";
            }


        }

        //private void btnGU_Click(object sender, RoutedEventArgs e)
        //{
        //    ChatServiceClient client = new ChatServiceClient();
        //    client.GetUserInfoCompleted += new EventHandler<GetUserInfoCompletedEventArgs>(client_GetUserInfoCompleted);

        //    client.GetUserInfoAsync();
        //    int i;
        //    for (i = 0; i < getuser.Count; i++)
        //    {
        //        client.GetUserInfoAsync(getuser[i]);

        //    }


        //}


        //private void btnGU_Click(object sender, RoutedEventArgs e)
        //{
        //    MessageManageClient client = new MessageManageClient();
        //    client.GetUserInfoCompleted += new EventHandler<GetUserInfoCompletedEventArgs>(client_GetUserInfoCompleted);


        //    client.GetUserInfoAsync();





        //}


        //void client_GetUserInfoCompleted(object sender, GetUserInfoCompletedEventArgs e)
        //{
        //    //this.lstgu.ItemsSource = e.Result;
        //    this.dataGrid1.ItemsSource = e.Result;
        //    //List<UserInfo> list=new List<UserInfo>();
        //    //list = e.Result;
        //    //this.lstgu.Items.Add(
        //    //    new TextBlock
        //    //{
        //    //    Text = "用户名:",
        //    //    TextWrapping = TextWrapping.Wrap
        //    //}
        //    //);

        //UserInfo abc=new UserInfo();
        //abc = e.Result;


        //if (this.txtGU.Text == "")
        //{
        //    this.txtGU.Text += "Id:" + e.Result.Id + "\r\n" + "Name:" + e.Result.Name;
        //}
        //else
        //{
        //    this.txtGU.Text += "\r\n" + "Id:" + e.Result.Id + "\r\n" + "Name:" + e.Result.Name;
        //}
        //}

        //private void btnCreateUser_Click(object sender, RoutedEventArgs e)
        //{

        //    UserInfo create = new UserInfo();
        //    create.Id = Convert.ToInt32(this.CreateUserId.Text);
        //    create.Name = this.CreateUserName.Text;
        //    ChatServiceClient client = new ChatServiceClient();


        //    client.CreateUserCompleted += new EventHandler<CreateUserCompletedEventArgs>(client_CreateUserCompleted);
        //    client.CreateUserAsync(create);
        //    client.GetUserInfoCompleted += new EventHandler<GetUserInfoCompletedEventArgs>(client_GetUserInfoCompleted);
        //    client.GetUserInfoAsync();
        //    App app = (App)Application.Current;
        //    app.RedirectTo(new MainPage());

        //}



        //void client_CreateUserCompleted(object sender, CreateUserCompletedEventArgs e)
        //{
        //    if (e.Result!=null)
        //    {
        //        MessageBox.Show("用户创建成功!");
        //        //_listuser = e.Result;
        //        //this.dataGrid1.ItemsSource = e.Result;
        //        this.CreateUserId.Text = "";
        //        this.CreateUserName.Text = "";
        //        this.groupBox1.Visibility = Visibility.Visible;
        //        this.CurrentId.Text = Convert.ToString(e.Result.Id);
        //        this.CurrentName.Text = e.Result.Name;
        //        this.groupBox5.Visibility = Visibility.Collapsed;
        //        //lstgu.Items.Add
        //        //    (

        //        //     new TextBlock
        //        //     {
        //        //         Text = "Id:" + e.Result.Id+"\n"+ "Name:" + e.Result.Name,
        //        //         TextWrapping = TextWrapping.Wrap
        //        //     }

        //        //    );

        //    }
        //    else 
        //    {
        //        MessageBox.Show("用户创建失败!");
        //    }
        //}

        //private void btnGU_Click(object sender, RoutedEventArgs e)
        //{
        //    ChatServiceClient client = new ChatServiceClient();
        //    client.GetUserInfoCompleted += new EventHandler<GetUserInfoCompletedEventArgs>(client_GetUserInfoCompleted);
        //    client.GetUserInfoAsync();
        //}

        private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            UserInfo stouser = new UserInfo();
            stouser = (UserInfo)this.dataGrid1.SelectedItem;
            if (this.dataGrid1.SelectedItem == null)
            {
                tongxin();
            }
            else
            {
                MessageManageClient client = new MessageManageClient();
                UserInfo formUser = new UserInfo()

                {
                    Id = Convert.ToInt32(this.CurrentId.Text),

                    Name = this.CurrentName.Text,
                };



                UserInfo toUser = new UserInfo()

                {

                    Id = stouser.Id,

                    Name = stouser.Name,

                };


                message.FromUser = formUser;

                message.ToUser = toUser;

                message.Content = txtContent.Text;

                message.SendTime = DateTime.Now;

                client.RequestMessageCompleted += new EventHandler<RequestMessageCompletedEventArgs>(client_RequestMessageCompleted);

                client.RequestMessageAsync(formUser);

                client.GetMessageReceived += new EventHandler<GetMessageReceivedEventArgs>(client_GetMessageReceived);
            }

        }

        void client_RequestMessageCompleted(object sender, RequestMessageCompletedEventArgs e)
        {
            if (e.Result)
            {

                MessageBox.Show("当前用户通信通道创建成功!");

            }
        }

        void client_GetMessageReceived(object sender, GetMessageReceivedEventArgs e)
        {
            if (e.Error == null)
            {

                //txtContentRecord.Text += "\r\n"+"来自:" + e.message.FromUser.Name + ",内容:" + e.message.Content + ",时间:" + e.message.SendTime.ToShortTimeString()+"\r\n";
                if (this.txtContentRecord.Text == "")
                {
                    txtContentRecord.Text += e.message.FromUser.Name + e.message.SendTime.ToShortTimeString() + ":" + "\r\n" + e.message.Content;

                }
                else
                {
                    txtContentRecord.Text += "\r\n" + e.message.FromUser.Name + e.message.SendTime.ToShortTimeString() + ":" + "\r\n" + e.message.Content;

                }

            }
        }

        private void Login_Click(object sender, RoutedEventArgs e)
        {

            if (this.CurrentId.Text == "" || this.CurrentName.Text == "")
            {
                MessageBox.Show("Id或Name不能为空!");
            }
            else
            {
                UserInfo currentuser = new UserInfo();
                currentuser.Id = Convert.ToInt32(this.CurrentId.Text);
                currentuser.Name = this.CurrentName.Text;

                bool isSuccess = false;
                foreach (UserInfo u in listuser)
                {
                    if (u.Id.Equals(currentuser.Id) && u.Name.Equals(currentuser.Name))
                    {
                        isSuccess = true;
                    }

                }
                if (isSuccess)
                {
                    MessageBox.Show("用户" + currentuser.Name + "登录成功!");
                    this.btnRefreshUser.IsEnabled = true;
                    this.dataGrid1.ItemsSource = listuser;
                    this.CurrentId.IsReadOnly = true;
                    this.CurrentName.IsReadOnly = true;
                    this.login.Visibility = Visibility.Collapsed;
                    tongxin();
                }
                else
                {
                    MessageBox.Show("用户" + currentuser.Name + "登录失败!");
                }
            }
        }

        private void btnRefreshUser_Click(object sender, RoutedEventArgs e)
        {
            //App app = (App)Application.Current;
            //app.RedirectTo(new MainPage(this.CurrentId.Text.Trim(), this.CurrentName.Text.Trim(), this.txtContentRecord.Text.Trim()));

            //this.dataGrid1.ItemsSource = null;
            //refresh = true;
            MessageManageClient client = new MessageManageClient();
            client.GetUserInfoCompleted += new EventHandler<GetUserInfoCompletedEventArgs>(client_GetUserInfoCompleted12);
            client.GetUserInfoAsync();
            
        }

        void client_GetUserInfoCompleted12(object sender, GetUserInfoCompletedEventArgs e)
        {
            
            if (e.Result != null)
            {
                List<UserInfo> rlistuser = new List<UserInfo>();
                
                foreach (var list in e.Result)
                {
                    rlistuser.Add(list);
                }
                this.dataGrid1.ItemsSource = rlistuser;
            }
            else
            {
                MessageBox.Show("当前用户列表为空!");
            }
        }

        public void tongxin()
        {
            MessageManageClient client = new MessageManageClient();
            UserInfo formUser = new UserInfo()

            {
                Id = Convert.ToInt32(this.CurrentId.Text),

                Name = this.CurrentName.Text,
            };

            UserInfo toUser = new UserInfo()

            {

                Id = formUser.Id,

                Name = formUser.Name,

            };

            message.FromUser = formUser;

            message.ToUser = toUser;

            message.Content = txtContent.Text;

            message.SendTime = DateTime.Now;

            client.RequestMessageCompleted += new EventHandler<RequestMessageCompletedEventArgs>(client_RequestMessageCompleted123);

            client.RequestMessageAsync(formUser);

            client.GetMessageReceived += new EventHandler<GetMessageReceivedEventArgs>(client_GetMessageReceived);
        }

        void client_RequestMessageCompleted123(object sender, RequestMessageCompletedEventArgs e)
        {
            if (e.Result)
            {

                //MessageBox.Show("当前用户通信通道创建成功!");

            }
        }
    }
}

本实例的一些配置主要参照了下文:

http://blog.csdn.net/cyb331/article/details/9185801

感谢该博主。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值