从线程访问主表单

时间:2014-09-01 15:20:01

标签: c# .net multithreading winforms

我正在尝试在主窗体上的TextBox中写一些Text(我在另一个帖子上阅读)。

我在这方面遇到了一些麻烦。 我尝试使用get / set txtBox.Text但是没有工作。

这是我的主要代码:

public partial class Form1 : Form
{
    private Worker w;
    public volatile bool running = true;
    public string KBox
    {
        get { return txtK.Text; }
        set { txtK.Text = value; }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        KBox = "TEST";             // It works
        w = new Worker();
        Thread kThread = new Thread(w.readLogs);
        kThread.Start(0);
        trdList.Add(kThread);
    }
}

这里是主题:

public class Worker : Form1
{
    public Worker(){ }

    public void stopProcess()
    {
        running = false;
    }

    public void readLogs(object type)
    {
        string filename;
        while (running)
            {
                this.SetText((int)type, running.ToString());
                Thread.Sleep(10);
            }
            Thread.Sleep(50);
    }
    private void SetText(int type, string txt)
    {
        switch (type)
        {
            case 0:
                KBox += Environment.NewLine + txt;
                break;
        }
    }

在调试中查看KBox我看到它接受了值,所以我认为线程设置正确,但TextBox有问题。

我认为这应该与Volatile类似,但volatile不适用于get / set。

问题是TextBox仍为空白。

0 个答案:

没有答案