实时绘图实际上是两个线程。外部线程直接用thread,只有到绘图那个逻辑才用绘图控件的mycanvas2.Dispatcher.Invoke。

或者说,INVOKE并不是开线程,只是一个绘图的委托而已。

主线程:

private void Read_UDP_Click(object sender, RoutedEventArgs e)
        {
            TCPRx mytcp = new TCPRx(" ", );

---------------------------------

error

---------------------------------

    //Action<Canvas> updateAction = new Action<Canvas>(mytcp.readdata);
            //updateAction.Invoke(this.FigureShow);
            //this.FigureShow.Dispatcher.Invoke(updateAction,this.FigureShow);
            //Action<Canvas, String> updateAction = new Action<Canvas, string>(mytcp.readdata);
            //this.Dispatcher.BeginInvoke(updateAction, this.FigureShow, "");

new Thread(() =>
            {
                //this.FigureShow.Dispatcher.Invoke(new Action(() =>
                {
                    while (true)
                    {
                        mytcp.readdata(this.FigureShow);
                        Thread.Sleep(10);
                    }
                }
                //)
                //);
            }).Start();
        }

--------------------------------------------------------------------------------------------------------

绘图

--------------------------------------------------------------------------------------------------------

public void readdata(Canvas mycanvas2)
        {
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
            EndPoint senderRemote = (EndPoint)sender;

state = new State(myconnect);
            buffer = new byte[length];
            //myconnect.BeginReceiveFrom(buffer, 0, length, SocketFlags.None, ref senderRemote, drawfigure, state);
            //---- myconnect.Receive(buffer);//buffer, 0, length, SocketFlags.None, ref senderRemote, drawfigure, state);

string message = System.Text.Encoding.Default.GetString(buffer, 0, length);
            string line = System.Text.Encoding.Default.GetString(buffer, 0, length);
      
            if (string.IsNullOrEmpty(line.Trim()))
            {
                return;
            }

//this.userName.Text = " 测试UI";  
            mycanvas2.Dispatcher.Invoke(
              new Action(
                 delegate()
                 {
                   
                    
                 }
           )
           );

}

WPF 实时绘图的逻辑的更多相关文章

  1. arduino 串口实时绘图(以mpu9250为例)

    兴趣之余,利用晚上的时间,做一些个人兴趣方面的开发. 之前没接触过 arduino, 无意之中买了个开发板做一些小开发, 这里利用python 读取 mpu9250 数据实时绘图. 下位机代码 C++ ...

  2. WPF 在绘图控件(Shape)中添加文字 [2018.7.15]

    原文:WPF 在绘图控件(Shape)中添加文字 [2018.7.15] Q:使用Shape的子类Ellipse画一个圆,如何在圆中添加文字? A:Shape类中不包含Text属性.可使用Shape类 ...

  3. WPF特效-绘图

    原文:WPF特效-绘图                  WPF玩起来还是挺炫酷的.我实现的效果:不同色块交叉,交叉部分颜色叠加显示.(叠加部分暂时用随机颜色代替).单独色块点击弹出以色块颜色为主的附 ...

  4. SurfaceView实时绘图,视频流

  5. WPF中绘图(含调用GDI+)

    private void DrawStuff() { // //if (buffer == null) //{ // buffer = new RenderTargetBitmap((int)Back ...

  6. WPF——OXY绘图_old

    plotModel = new PlotModel() { Title = "数据统计", LegendTitle = "Max:红色,Min:黄色", Leg ...

  7. WPF——OXY绘图

    private PlotModel _plotModel; public PlotModel plotModel { get { return _plotModel; } set { _plotMod ...

  8. iOS---实现在屏幕上实时绘图的简单效果---CAShaperLayer和UIBezierPath的简单运用

    首先,声明几个属性 @property(nonatomic,strong)UIBezierPath * beizer; @property(nonatomic,assign)CGPoint start ...

  9. WPF特效-绘制实时2D激光雷达图

    原文:WPF特效-绘制实时2D激光雷达图 接前两篇: https://blog.csdn.net/u013224722/article/details/80738619 https://blog.cs ...

随机推荐

  1. (八)Java 修饰符

    Java 修饰符 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class ...

  2. Webapp兼容性布局

  3. 双系统xp和ubuntu,删除ubuntu

    1:下载MbrFix.exe 2:进入c盘,命令MbrFix /drive 0 fixmbr

  4. bzoj1833: [ZJOI2010]count 数字计数&&USACO37 Cow Queueing 数数的梦(数位DP)

    难受啊,怎么又遇到我不会的题了(捂脸) 如题,这是一道数位DP,随便找了个博客居然就是我们大YZ的……果然nb,然后就是改改模版++注释就好的了,直接看注释吧,就是用1~B - 1~A-1而已,枚举全 ...

  5. hihocoder 第二十五周 spfa 最短路

    其实hihocoder里的题目目前大都是模板题啊-.- 这周的是SPFA,暑假的时候有看过SPFA,不过一直用的都是Dijkstra,感觉spfa要更加简洁一点~~,今天找了一份之前一直都看不太懂所以 ...

  6. Ubuntu TFTP 服务

    /******************************************************************** * Ubuntu TFTP 服务 * 说明: * 在Ubun ...

  7. I.MX6 mkuserimg.sh 使用

    /*********************************************************************** * I.MX6 mkuserimg.sh 使用 * 说 ...

  8. 常见电商项目的数据库表设计(MySQL版)

    转自:https://cloud.tencent.com/developer/article/1164332 简介: 目的: 电商常用功能模块的数据库设计 常见问题的数据库解决方案 环境: MySQL ...

  9. Combo Box (组合框)控件的使用方法

    Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本 ...

  10. A+B Problem——经典中的经典

    A+B Problem,这道题,吸收了天地的精华,是当之无愧的经典中的经典中的经典.自古以来OIer都会经过它的历练(这不是白说吗?),下面就有我herobrine来讲讲这道题的各种做法. 好吧,同志 ...