вызвать проблему метода с объектом формы в c # - PullRequest
0 голосов
/ 19 июля 2011

Я разрабатываю приложение чата на C #, и мы используем System.Timer.Timer для частого получения данных для нового запроса и запроса зоны.

Работает нормально, но всякий раз, когда мы создаем новый экземплярВозникла перекрестная операция.

Это мой код:

frmchat f = new frmchat();
MethodInvoker method = new MethodInvoker(delegate()
{
    f.Name = "xyz";f.Show();
});
if (f.InvokeRequired)
{
    f.Invoke(method);
}
else
{
    method();
}

Это создаст несколько форм чата.

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Полагаю, ваша проблема в том, что новые формы можно создавать только в потоке пользовательского интерфейса.Попробуйте использовать Windows.Forms.Timer , если это возможно.Это автоматически вызовет событие в нужном потоке автоматически.

0 голосов
/ 20 июля 2011

Если вы создаете эту форму в обработчике прошедшего события этого таймера, используйте вместо этого this.Invoke, например:

this.Invoke(new MethodInvoker(() =>
{
    frmchat f = new frmchat();
    f.Name = "xyz";
    f.Show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...