如何同步读写

时间:2014-03-07 17:00:29

标签: c# winforms

 private void butt_Click(object sender, EventArgs e)
 {
        try 
        {
            richTextBox1.Text = RunPreUp("script");
        }
        catch(exception p) { }
 }

我的问题是RunPreUP(“脚本”)需要超过3分钟,所以我想从RunPreUp(“script”)同步richTextBox1的写入和读取; 有async / await,但它是farmework4.5,我在VS2010 framework.3.5上工作。 野兽问候

2 个答案:

答案 0 :(得分:1)

查看BackgroundWorker班级或ThreadPool班级。任何一个都可以让你运行冗长的操作,完成后你可以用结果更新.Text属性。请记住,您需要richTextBox1.Invoke来设置属性。

答案 1 :(得分:0)

使用单独的线程?

我测试了这个并且它有效。

   public partial class Form1 : Form
{
    private Thread _thread = null;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        ParameterizedThreadStart pts = new ParameterizedThreadStart(RunPreUp);

        _thread = new Thread(pts);

        _thread.Start("script");
    }

    private void RunPreUp(object param)
    {
        string parameter = param as string;

        // do work.

        string result = "here is a result";

        richTextBox1.Invoke((MethodInvoker)delegate
        {
            richTextBox1.Text = result;
        });

        Thread.CurrentThread.Abort();
    }
}