我在课程黑名单
中有一个方法Process(Progressbar)
我试着用这个:
Thread thread = new Thread(() => Blacklist.Process(pgImportProcess));
发生错误
C#3.0语言功能
So how can i create a thread and parse progressbar as a parameter?
提前感谢
答案 0 :(得分:1)
你试过了吗?
void Invoker(){
ParameterizedThreadStart pts = Start;
Thread thread = new Thread(pts);
thread.Start(new object());
}
public void Start(object o)
{
//do stuff
}
答案 1 :(得分:1)
您无法从与创建时不同的线程访问UI对象。每个 Control
都有一个Invoke
方法,它将在UI线程上执行委托。例如,如果您需要更新进度条进度:
progressBar.Invoke(new Action(){()=> progressBar.Value = updateValue;});
击>
所以你只需要使用Thread constructor that takes a ParameterizedThreadStart委托。
Thread thread = new Thread(StartProcess);
thread.Start(pgImportProcess);
...
private static void StartProcess(object progressBar) {
Blacklist.Process((ProgressBar)progressBar);
}
答案 2 :(得分:1)
您可以创建一个类来传递参数,如
public class Sample
{
object _value;
public Sample(object value)
{
this._value = value;
}
public void Do()
{
// dosomething
// Invoke the Process(value)
}
}
然后
Sample p = new Sample("your parameter : Progressbar");
new Thread(new ThreadStart(p.Do)).Start();