首页 新闻 搜索 专区 学院

多线程怎么用啊???用WPF

0
悬赏园豆:10 [已解决问题] 解决于 2013-08-29 17:07

页面内显示两个TextBox,让‘张三’,‘李四’,‘王五’等不定的人名在TextBox内的几秒一变动的显示,用线程怎么写?

帮忙带解析。。。

c#
问题补充:

都不行啊。。。。

BeginInvoke不存在。

是要用WPF做的

..00..的主页 ..00.. | 初学一级 | 园豆:49
提问于:2013-08-01 17:00
< >
分享
最佳答案
0

用DispatcherTimer,通过Tick事件,具体的可以搜索下

收获园豆:10
囧月 | 小虾三级 |园豆:1139 | 2013-08-01 17:17

跟winform当然不一样了

楼主看看这个吧:http://www.cnblogs.com/Zhouyongh/archive/2011/01/12/1933414.html

要返回UI线程 也可以用 Dispatcher.BeginInvoke方法

囧月 | 园豆:1139 (小虾三级) | 2013-08-01 18:11

@囧月: 

谢谢,虽然有些方法我没太看明白,我的解决办法是:

 delegate void MyDelegate(int value);
        Thread t;
        int i = 0; 

 void setValue(int value)
        {
            txt_name.Text = value.ToString();
        }
        // 要长时间做的工作 
        void doWork()
        {
           
            MyDelegate A = new MyDelegate(setValue);
            while (true)
            {
                ++i;
                //---WinForm--   
                // this.Invoke(d, i);
                //----WPF---added by wonsoft.cn---     
                this.Dispatcher.Invoke(A, i);
              //  if (i == 3)
               // {
                //    i = 0;
               // }
                Thread.Sleep(5000);
            }
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            t = new Thread(doWork);
            t.Start();
        
        }

我呢是刚接触线程,我现在理解线程就是相当于一个委托事件,这个委托事件是一个无限循环的,可以设置他执行停顿时间。

不知道这样理解是否正确???请指教!!

 
..00.. | 园豆:49 (初学一级) | 2013-08-07 13:13

@..00..: 线程和进程概念类似,有些异步也有类似的。

了解ui线程和后台线程,以及它们的用途,基本上就理解了。楼主这个功能用timer其实更合适

囧月 | 园豆:1139 (小虾三级) | 2013-08-07 19:14

@囧月: timer我再看看,现在呢我想问一下,我现在要做刷卡界面的,我就用上面得代码,把“i”的值该为刷卡人的ID,然后void setValue(int value)这个方法里面通过ID查询信息在显示到界面上。这样写对吗?或者用没有其他的方法?

..00.. | 园豆:49 (初学一级) | 2013-08-08 09:02

@..00..: 查询信息这种没有UI交互的,可以不用Dispatcher.Invoke,查询完成之后再Dispatcher.Invoke就好了

囧月 | 园豆:1139 (小虾三级) | 2013-08-11 11:43
其他回答(4)
0
//你感受一下,每5秒执行一次。
            Int32 index = 0;
            System.Threading.Timer t = new System.Threading.Timer((obj) =>
            {
                BeginInvoke(new Action(() =>
                {
                    textBox1.Text = index + "";
                }));
                index++;
            }, null, 0, 5 * 1000);
写代码的小2B | 园豆:4346 (老鸟四级) | 2013-08-01 17:17
0

幻天芒 | 园豆:36672 (高人七级) | 2013-08-01 17:31
0

学习了

panjk | 园豆:712 (小虾三级) | 2013-08-04 08:30
0

使用Dispatcher,跟UI交互

andy1987 | 园豆:490 (菜鸟二级) | 2013-08-05 13:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册