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