wpf 多线程操作实例

来源:互联网 发布:淘宝一分钱试用在哪里 编辑:程序博客网 时间:2024/05/21 11:07

由于wpf中有主线程和后台线程的区分所以不能直接使用线程进行主线程的操作

之前是使用func来进行线程操作的,因为func自带这对主线程操作的方法,所以直接写会方便很多

后来,要用到多线程的时候在使用func方法就会显得有些麻烦,还是使用c#最经典的thread最好

        private Thread _thread;        public MainWindow()        {            InitializeComponent();            Loaded+=MainWindow_Loaded;        }        private void MainWindow_Loaded(object sender, RoutedEventArgs e)        {            _thread=new Thread(Show);            _thread.Start();        }        protected new void Show()        {            GridTest.Dispatcher.Invoke(new Action(() =>            {                // this.GridTest.Children.Add(new uc)                GridTest.Visibility = Visibility.Visible;                // 进入主界面操作UI线程            }));            Thread.Sleep(10000);// 模拟操作            GridTest.Dispatcher.Invoke(new Action(() =>            {                // 主ui线程操作                GridTest.Visibility = Visibility.Collapsed;            }));        }

使用这种方法可以直接使用传统的c#线程操作,

            GridTest.Dispatcher.Invoke(new Action(() =>            {                // 主ui线程操作                //             }));

只需要使用上面的方法就可以直接对ui线程进行操作。

gridTest是对wpf中XAML的grid的命名

<Grid>        <Grid             Name="GridTest" HorizontalAlignment="Left" Height="172" Margin="132,70,0,0" VerticalAlignment="Top" Width="287" Background="#FF00F3FF" Visibility="Collapsed"/>        <Button Content="Button" HorizontalAlignment="Left" Margin="196,247,0,0" VerticalAlignment="Top" Width="100" Height="48"/>    </Grid>

同理,多线程只需要用传统的c#线程在搭配上部分的主线程ui操作就行了

0 0