我有一个方法可以从标签中的string []打印信息,该标签是类User的一部分,我实例化了两次。我必须在两个线程中运行此线程,每个线程都为一个User运行,因此信息将以先前创建的两个标签打印(这就是为什么我将Label作为方法中的参数传递的原因)。
我知道要做到这一点(否则会引发Exception),我必须调用一个委托,但是我没有看到使用控件作为参数的委托的示例。我正在使用类似Microsoft提供的示例的东西,所以我尝试了下面提供的代码。
无论如何都行不通,而且我感觉自己不知道自己在做什么……我应该在这里使用哪种代表?
谢谢。
我试图创建委托,但没有成功。我试图寻找代表作用于将在另一个类中调用的方法的示例,并将组件作为参数,但是找不到可理解的代表。
这是代码的一部分;第一个是在标签上打印的。第二个,我试图将第一部分代码放入的委托:
public void Info(Label lbl){
string[] arrPrint = PrintableArray()
foreach(var line in arrPrint)
{
lbl.Text += line;
}
}
private delegate void Call(Label lbl);
private void WriteText(Label lbl)
{
if (lbl.InvokeRequired)
{
var d = new SafeCall(WriteText);
Invoke(d, new Label { lbl });
}
else
{
foreach(var line in arrPrint)
{
lbl.Text += line;
}
}
}
我希望两个线程都能运行,但是会在没有委托的情况下得到InvalidOperationException,并且当尝试编写该委托时,它是完全错误的。