MONO 中线程操作UI
MONO 调用一个线程操作UI 然后报Only the original thread that created a view hierarchy can touch its views。错误 google了一下说UI的操作还是需要到主线程,看了些java的例子 但是在MONO中需要怎么实现 多谢各位了
这是一个java的解决方案 在Mono中Handler大概需要怎么实现
mono 线程 java
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();
}
});
}
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();
}