首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

MONO 中线程操作UI,该怎么处理

2013-09-05 
MONO 中线程操作UIMONO 调用一个线程操作UI 然后报Only the original thread that created a view hierarc

MONO 中线程操作UI
MONO 调用一个线程操作UI 然后报Only the original thread that created a view hierarchy can touch its views。错误 google了一下说UI的操作还是需要到主线程,看了些java的例子 但是在MONO中需要怎么实现 多谢各位了

这是一个java的解决方案 在Mono中Handler大概需要怎么实现


public class MasterActivity extends Activity {  
    TextView tv = null;  
    Button btn = null;  
      
    Handler mHandler = new Handler() {  
        @Override  
        public void handleMessage(Message msg) {  
            if(msg.what == 1) {  
                tv.setText("update UI is success!");  
                btn.setText("update UI is success!");  
            }  
            super.handleMessage(msg);  
        }  
    };  
      
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        System.out.println(Thread.currentThread().getName() + ": " + Thread.currentThread().getId());  
        tv = (TextView)findViewById(R.id.text);  
        btn = (Button)findViewById(R.id.btn);  
        btn.setOnClickListener(new OnClickListener() {  
              
            @Override  
            public void onClick(View v) {  
                Thread thread = new Thread(new Runnable() {  


                      
                    @Override  
                    public void run() {  
                        System.out.println(Thread.currentThread().getName() + ": " + Thread.currentThread().getId());  
                        Message msg = mHandler.obtainMessage();  
                        msg.what = 1;  
                        msg.sendToTarget();  
                    }});  
                thread.start();  
            }  
        });  
}  

mono 线程 java
[解决办法]
LZ搜一下BeginInvoke这个关键字。
[解决办法]
引用:
Quote: 引用:

LZ搜一下BeginInvoke这个关键字。


我已经试过了,不是线程异步调用的问题 是MONO操作UI还是要回到主线程里面来 子线程是不行的

Mono不可以用委托回调么?
[解决办法]
用vs2012写了个程序,代码很简单,就是写5个数,编译后拖入ubuntu系统,运行很正常


private void button1_Click(object sender, EventArgs e)


        {
            new Thread(() =>
            {
                for (int i = 0; i < 5; i++)
                {
                    Invoke((MethodInvoker)(() => { richTextBox1.Text += i.ToString() + Environment.NewLine; }));
                    Thread.Sleep(1000);
                }
            }).Start();
        }


MONO 中线程操作UI,该怎么处理

热点排行