C# WPF 使用委托修改UI控件

Posted 奔跑.Ken

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WPF 使用委托修改UI控件相关的知识,希望对你有一定的参考价值。

    近段时间在自学WPF,是一个完全不懂WPF的菜鸟,对于在线程中修改UI控件使用委托做一个记录,给自已以后查询也给需要的参考:

 

界面只放一个RichTextBox,在窗体启动时开起两个线程,调用两个函数,每隔1秒写一次当前时间

一 界面XAML如下:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" WindowStartupLocation="CenterScreen" Loaded="Window_Loaded">
    <Grid>
        <ScrollViewer>
            <RichTextBox HorizontalAlignment="Stretch" Margin="12" Name="richTextBox1" VerticalAlignment="Stretch" />
        </ScrollViewer>
    </Grid>
</Window>

 

 

二 在界面启动时开启两个线程:

 1         private void Window_Loaded(object sender, RoutedEventArgs e)
 2         {
 3             //创建线程1
 4             Thread t1 = new Thread(new ThreadStart(T1));
 5             t1.Start();
 6 
 7             //创建线程2
 8             Thread t2 = new Thread(new ThreadStart(T2));
 9             t2.Start();
10         }

 

三 线程调用函数:

        /// <summary>
        /// 线程1调用函数
        /// add by 
        /// </summary>
        private void T1()
        {
            while (true)
            {
                Thread.Sleep(TimeSpan.FromSeconds(1));
                ShowMsg(string.Format("T1 {0}", System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss:fff")));
            }
        }
        /// <summary>
        /// 线程2调用函数
        /// add by 
        /// </summary>
        private void T2()
        {
            while (true)
            {
                Thread.Sleep(TimeSpan.FromSeconds(1));
                ShowMsg(string.Format("T2 {0}", System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss:fff")));
            }
        }

 

三 写前端函数:

        private void ShowMsg(string sMsg)
        {
            this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate() {
                richTextBox1.AppendText(string.Format("{0} \\r\\n",sMsg));
            });
        }

 

以上是关于C# WPF 使用委托修改UI控件的主要内容,如果未能解决你的问题,请参考以下文章

我可以从后面的 C# 代码更新 WPF 绑定的值吗?

c#如何跨线程调用窗体控件

VB跨线程调用WPF控件

WinformWPF 多线程访问控件

匿名管道 c# WPF

wpf怎么动态 控制控件位置c#代码