Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grid.children.clear线程错误xmpp wpf_Wpf_Grid_Xmpp - Fatal编程技术网

Grid.children.clear线程错误xmpp wpf

Grid.children.clear线程错误xmpp wpf,wpf,grid,xmpp,Wpf,Grid,Xmpp,我正在调用一个具有Grid.Children.Clear()功能的方法。当从不同的方法调用它时,它工作得很好。但是当我从xmpp_onmessage方法调用我的方法时。我遇到了一个错误。“调用线程无法访问此对象,因为其他线程拥有它。” 下面是包含Grid.Children.Clear()的方法: private视图(布尔值isChat) { System.uriresourceuri=new System.Uri(“Public/Images/chat_green-textarea.png

我正在调用一个具有
Grid.Children.Clear()功能的方法。当从不同的方法调用它时,它工作得很好。但是当我从xmpp_onmessage方法调用我的方法时。我遇到了一个错误。“调用线程无法访问此对象,因为其他线程拥有它。”

下面是包含Grid.Children.Clear()的方法:

private视图(布尔值isChat)
{   
System.uriresourceuri=new System.Uri(“Public/Images/chat_green-textarea.png”,UriKind.Relative);
StreamResourceInfo streamInfo=Application.GetResourceStream(resourceUri);
System.uriresourceuri2=new System.Uri(“Public/Images/chat_green-textarea-tail.png”,UriKind.Relative);
StreamResourceInfo streamInfo2=Application.GetResourceStream(resourceUri2);
System.uriresourceuri3=new System.Uri(“Public/Images/chat_blue-textarea.png”,UriKind.Relative);
StreamResourceInfo streamInfo3=Application.GetResourceStream(resourceUri3);
System.uriresourceuri4=new System.Uri(“Public/Images/chat_blue-textarea-tail.png”,UriKind.Relative);
StreamResourceInfo streamInfo4=Application.GetResourceStream(resourceUri4);
BitmapFrame temp=BitmapFrame.Create(streamInfo.Stream);
var brush=新的ImageBrush();
brush.ImageSource=温度;
BitmapFrame temp2=BitmapFrame.Create(streamInfo2.Stream);
BitmapFrame temp3=BitmapFrame.Create(streamInfo3.Stream);
var brush2=新的ImageBrush();
brush2.ImageSource=temp3;
BitmapFrame temp4=BitmapFrame.Create(streamInfo4.Stream);
int ctr=0;
chatGrid.Children.Clear();
if(isChat==true)
{
对于(int i=0;i<\u messageView.Count;i++)
{
if((!\u messageView.ElementAt(i).Message.ToString().Trim().Equals(“”))
{
RowDefinition chatGridRow1=新的RowDefinition();
RowDefinition chatGridRow2=新的RowDefinition();
RowDefinition chatGridRow3=新的RowDefinition();
添加(chatGridRow1);
添加(chatGridRow2);
添加(chatGridRow3);
if(_messageView.ElementAt(i).IsMe==true)
{
TextBlock Message=新建TextBlock();
Message.前台=画笔.White;
Message.Padding=新厚度(10,10,10,10);
Message.HorizontalAlignment=HorizontalAlignment.Right;
Message.Margin=新厚度(0,0,5,0);
Message.Background=2;
Message.TextWrapping=TextWrapping.Wrap;
Message.Text=_messageView.ElementAt(i).Message;
Grid.SetRow(消息,ctr);
Grid.SetColumn(消息,0);
ctr++;
Image Bluetail=新图像();
Bluetail.Source=temp4;
Bluetail.HorizontalAlignment=HorizontalAlignment.Right;
蓝尾鱼。高度=10;
蓝尾鱼。宽度=20;
蓝尾金=新厚度(0,-(0.7),10,0);
Grid.SetRow(蓝尾,ctr);
ctr++;
标签发送者=新标签();
Sender.Foreground=画笔.White;
边距=新厚度(0,0,0,10);
Sender.HorizontalAlignment=HorizontalAlignment.Right;
Sender.Content=“发送人:”+\u messageView.ElementAt(i).Name.ToString()+“”+\u messageView.ElementAt(i).DateCreated.ToString();
Grid.SetRow(发送方、ctr);
Grid.SetColumn(发送方,0);
ctr++;
chatGrid.Children.Add(消息);
chatGrid.Children.Add(蓝尾);
chatGrid.Children.Add(发送方);
}
其他的
{
TextBlock Message=新建TextBlock();
Message.前台=画笔.White;
Message.Padding=新厚度(10,10,10,10);
Message.HorizontalAlignment=HorizontalAlignment.Left;
Message.Margin=新厚度(5,0,0,0);
Message.Background=brush;
Message.TextWrapping=TextWrapping.Wrap;
Message.Text=_messageView.ElementAt(i).Message;
Grid.SetRow(消息,ctr);
Grid.SetColumn(消息,0);
ctr++;
图像绿尾=新图像();
Greentail.Source=temp2;
Greentail.HorizontalAlignment=HorizontalAlignment.Left;
绿尾。高度=10;
绿尾。宽度=20;
绿尾边缘=新厚度(10,-(0.7),5,0);
Grid.SetRow(绿尾,ctr);
ctr++;
标签发送者=新标签();
Sender.Foreground=画笔.White;
边距=新厚度(0,0,0,10);
Sender.HorizontalAlignment=HorizontalAlignment.Left;
Sender.Content=“发送人:”+\u messageView.ElementAt(i).Name.ToString()+“”+\u messageView.ElementAt(i).DateCreated.ToString();
Grid.SetRow(发送方、ctr);
Grid.SetColumn(发送方,0);
ctr++;
 private void ConstructChatView(Boolean isChat)
    {   
        System.Uri resourceUri = new System.Uri("Public/Images/chat_green-textarea.png", UriKind.Relative);
        StreamResourceInfo streamInfo = Application.GetResourceStream(resourceUri);

        System.Uri resourceUri2 = new System.Uri("Public/Images/chat_green-textarea-tail.png", UriKind.Relative);
        StreamResourceInfo streamInfo2 = Application.GetResourceStream(resourceUri2);

        System.Uri resourceUri3 = new System.Uri("Public/Images/chat_blue-textarea.png", UriKind.Relative);
        StreamResourceInfo streamInfo3 = Application.GetResourceStream(resourceUri3);

        System.Uri resourceUri4 = new System.Uri("Public/Images/chat_blue-textarea-tail.png", UriKind.Relative);
        StreamResourceInfo streamInfo4 = Application.GetResourceStream(resourceUri4);


        BitmapFrame temp = BitmapFrame.Create(streamInfo.Stream);
        var brush = new ImageBrush();
        brush.ImageSource = temp;

        BitmapFrame temp2 = BitmapFrame.Create(streamInfo2.Stream);

        BitmapFrame temp3 = BitmapFrame.Create(streamInfo3.Stream);
        var brush2 = new ImageBrush();
        brush2.ImageSource = temp3;

        BitmapFrame temp4 = BitmapFrame.Create(streamInfo4.Stream);

        int ctr = 0;
        chatGrid.Children.Clear();
        if (isChat == true)
        {
            for (int i = 0; i < _messageView.Count; i++)
            {

                if ((!_messageView.ElementAt(i).Message.ToString().Trim().Equals("")))
                {
                    RowDefinition chatGridRow1 = new RowDefinition();
                    RowDefinition chatGridRow2 = new RowDefinition();
                    RowDefinition chatGridRow3 = new RowDefinition();

                    chatGrid.RowDefinitions.Add(chatGridRow1);
                    chatGrid.RowDefinitions.Add(chatGridRow2);
                    chatGrid.RowDefinitions.Add(chatGridRow3);

                    if (_messageView.ElementAt(i).IsMe == true)
                    {
                        TextBlock Message = new TextBlock();
                        Message.Foreground = Brushes.White;
                        Message.Padding = new Thickness(10, 10, 10, 10);
                        Message.HorizontalAlignment = HorizontalAlignment.Right;
                        Message.Margin = new Thickness(0, 0, 5, 0);
                        Message.Background = brush2;
                        Message.TextWrapping = TextWrapping.Wrap;
                        Message.Text = _messageView.ElementAt(i).Message;
                        Grid.SetRow(Message, ctr);
                        Grid.SetColumn(Message, 0);
                        ctr++;

                        Image Bluetail = new Image();
                        Bluetail.Source = temp4;
                        Bluetail.HorizontalAlignment = HorizontalAlignment.Right;
                        Bluetail.Height = 10;
                        Bluetail.Width = 20;
                        Bluetail.Margin = new Thickness(0, -(0.7), 10, 0);
                        Grid.SetRow(Bluetail, ctr);
                        ctr++;

                        Label Sender = new Label();
                        Sender.Foreground = Brushes.White;
                        Sender.Margin = new Thickness(0, 0, 0, 10);
                        Sender.HorizontalAlignment = HorizontalAlignment.Right;
                        Sender.Content = "Sent By : " + _messageView.ElementAt(i).Name.ToString() + " " + _messageView.ElementAt(i).DateCreated.ToString();
                        Grid.SetRow(Sender, ctr);
                        Grid.SetColumn(Sender, 0);
                        ctr++;

                        chatGrid.Children.Add(Message);
                        chatGrid.Children.Add(Bluetail);
                        chatGrid.Children.Add(Sender);
                    }
                    else
                    {
                        TextBlock Message = new TextBlock();
                        Message.Foreground = Brushes.White;
                        Message.Padding = new Thickness(10, 10, 10, 10);
                        Message.HorizontalAlignment = HorizontalAlignment.Left;
                        Message.Margin = new Thickness(5, 0, 0, 0);
                        Message.Background = brush;
                        Message.TextWrapping = TextWrapping.Wrap;
                        Message.Text = _messageView.ElementAt(i).Message;
                        Grid.SetRow(Message, ctr);
                        Grid.SetColumn(Message, 0);
                        ctr++;

                        Image Greentail = new Image();
                        Greentail.Source = temp2;
                        Greentail.HorizontalAlignment = HorizontalAlignment.Left;
                        Greentail.Height = 10;
                        Greentail.Width = 20;
                        Greentail.Margin = new Thickness(10, -(0.7), 5, 0);
                        Grid.SetRow(Greentail, ctr);
                        ctr++;

                        Label Sender = new Label();
                        Sender.Foreground = Brushes.White;
                        Sender.Margin = new Thickness(0, 0, 0, 10);
                        Sender.HorizontalAlignment = HorizontalAlignment.Left;
                        Sender.Content = "Sent By : " + _messageView.ElementAt(i).Name.ToString() + " " + _messageView.ElementAt(i).DateCreated.ToString();
                        Grid.SetRow(Sender, ctr);
                        Grid.SetColumn(Sender, 0);
                        ctr++;

                        chatGrid.Children.Add(Message);
                        chatGrid.Children.Add(Greentail);
                        chatGrid.Children.Add(Sender);
                    }
                }

            }
        }
        else
        {
            for (int i = 0; i < _messageView.Count; i++)
            {

                if (_messageView.ElementAt(i).IsMe == true && (!_messageView.ElementAt(i).Message.ToString().Trim().Equals("")))
                {
                    RowDefinition chatGridRow1 = new RowDefinition();
                    RowDefinition chatGridRow2 = new RowDefinition();
                    RowDefinition chatGridRow3 = new RowDefinition();

                    chatGrid.RowDefinitions.Add(chatGridRow1);
                    chatGrid.RowDefinitions.Add(chatGridRow2);
                    chatGrid.RowDefinitions.Add(chatGridRow3);


                    TextBlock Message = new TextBlock();
                    Message.Foreground = Brushes.White;
                    Message.Margin = new Thickness(0, 10, 300, 0);
                    Message.Padding = new Thickness(10, 10, 10, 10);
                    Message.HorizontalAlignment = HorizontalAlignment.Left;
                    Message.Background = brush;
                    Message.TextWrapping = TextWrapping.Wrap;
                    Message.Text = _messageView.ElementAt(i).Message;
                    Grid.SetRow(Message, ctr);
                    Grid.SetColumn(Message, 0);
                    ctr++;

                    Image Greentail = new Image();
                    Greentail.Source = temp2;
                    Greentail.HorizontalAlignment = HorizontalAlignment.Left;
                    Greentail.Height = 10;
                    Greentail.Width = 20;
                    Greentail.Margin = new Thickness(5, -(0.7), 0, 0);
                    Grid.SetRow(Greentail, ctr);
                    ctr++;

                    Label Sender = new Label();
                    Sender.Foreground = Brushes.White;
                    Sender.Margin = new Thickness(0, 0, 0, 10);
                    Sender.Content = "Sent By : " + _messageView.ElementAt(i).Name.ToString() + " " + _messageView.ElementAt(i).DateCreated.ToString();
                    Grid.SetRow(Sender, ctr);
                    Grid.SetColumn(Sender, 0);
                    ctr++;

                    chatGrid.Children.Add(Message);
                    chatGrid.Children.Add(Greentail);
                    chatGrid.Children.Add(Sender);
                }

            }
        }
        //for (int i = 0; i < _messageView.Count; i++)
        //{
        //    if (_messageView.ElementAt(i).IsMe == true && (!_messageView.ElementAt(i).Message.ToString().Trim().Equals("")))
        //    {
        //    }


        //}
        ctr = 0;

        scrollView.ScrollToEnd();
    }
private void ConstructChatView(Boolean isChat)
{
    Dispatcher.Invoke((Action)(() => chatGrid.Children.Clear()));
}
private void ConstructChatView(Boolean isChat)
{
    Dispatcher.Invoke((Action)(() =>
        {
            // more code here
        }));
}
private void ConstructChatView(Boolean isChat)
{
    Dispatcher.Invoke((Action)(() => ConstructChatViewInUI(isChat)));
}

private void ConstructChatViewInUI(Boolean isChat)
{
    ...
}