如何从另一个线程设置textview

时间:2015-02-27 11:42:20

标签: multithreading monodevelop gtk#

我试图从主要文本之外的其他帖子中设置textview的文本,所以我已经在构造函数中写了:

    Thread myth = new Thread (new ThreadStart (set_txt));
    myth.Start ();

当然set_txt是一个包含

的方法
    textview1.Buffer.Text = "Whatever";

问题在于,当我运行代码时,大部分时间停止并发出错误:

    =================================================================
    Got a SIGSEGV while executing native code. This usually indicates
    a fatal error in the mono runtime or one of the native libraries 
    used by your application.
    =================================================================

我该怎么办?

2 个答案:

答案 0 :(得分:2)

您需要从GUI线程更新GTK#文本视图。您可以使用Gtk.Application.Invoke:

执行此操作
 Gtk.Application.Invoke (delegate {
     textview1.Buffer.Text = "Whatever";
 });

答案 1 :(得分:1)

您需要从UI线程更新UI。只需使用Gtk.Application.Invoke传递lambda或委托:

Gtk.Application.Invoke(() => { textview1.Buffer.Text = "Whatever"; });