C# 如何同步读写

C# 如何同步读写,c#,winforms,C#,Winforms,我的问题是RunPreUP(“脚本”)需要3分钟以上的时间,所以我想从RunPreUP(“脚本”)同步richTextBox1的写入和读取; 有async/await,但它是针对farmework4.5的,我使用的是VS2010 framework.3.5。 beast将查看BackgroundWorker类或ThreadPool类。任何一个都可以让您运行冗长的操作,完成后您可以使用结果更新.Text属性。请记住,您需要执行richTextBox1.Invoke来设置属性。是否使用单独的线程 我

我的问题是RunPreUP(“脚本”)需要3分钟以上的时间,所以我想从RunPreUP(“脚本”)同步richTextBox1的写入和读取; 有async/await,但它是针对farmework4.5的,我使用的是VS2010 framework.3.5。
beast将查看
BackgroundWorker
类或
ThreadPool
类。任何一个都可以让您运行冗长的操作,完成后您可以使用结果更新
.Text
属性。请记住,您需要执行
richTextBox1.Invoke
来设置属性。

是否使用单独的线程

我已经测试了这个,它是有效的

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

想详细说明什么更好吗?移除它?你的评论不是特别有用,你可以删除它。并调用“Abort()”。调用“richTextBox1.Invoke()”就足以实现正确的功能。
   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();
    }
}