У меня есть метод, который печатает информацию из строки [] в метке, которая является частью класса User, который я создаю дважды.Я должен выполнить это в двух потоках, каждый для пользователя, поэтому информация печатается в двух ранее созданных метках (поэтому я передаю метку в качестве параметра в методе).
Я понимаю, что для этого (в противном случае выдается исключение) я должен вызвать делегата, но я не видел примеров делегатов с элементами управления в качестве параметров.Я работал с чем-то вроде примера, который предоставляет 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 без делегата, и при попытке записать этот делегат,это совершенно неправильно.