private void вСетиToolStripMenuItem1_Click(object sender, EventArgs e)
{
sess = new Session(uin, pass);
sess.LoginCompleted += new LoginCompletedHandler(sess_LoginCompleted);
sess.LoginFailed += new LoginFailedHandler(sess_LoginFailed);
sess.Messages.MessageReceived += new MessageReceivedHandler(Messages_MessageReceived);
sess.ClientCapabilities = Capabilities.SIMKopete | Capabilities.UTF8;
sess.Statuses.UserStatusReceived += new UserStatusReceivedHandler(Statuses_UserStatusReceived);
sess.Logon(logonServer, logonPort);
sess.ActivateBuddyList();
}
Зависает форма, созданная в обработчике события MessageReceived
Использую: VS2008 (C#), .NET Framework 3.5, Windows 7.
Для работы с протоколом использую библиотеку oscarlib.dll
Подключение к серверу, логин/логаут, отправка сообщения по указаному UIN'у проходят так как я задумываю, но есть проблемка при получении сообщений: в обработчике события Messages_MessageReceived написан элементраный код - создать и показать форму, при входящем сообщении форма диалога (да вообще любая) создается, но не прорисовывается полностью и зависает (не отвечает на действия). В других обработчиках все срабатывает на "ура"... В чем проблема?
Подключение и подписка на события у меня такая:
Код:
Обработчик события sess.Messages.MessageReceived выглядит:
Код:
void Messages_MessageReceived(object sender, MessageReceivedEventArgs e)
{
DialogsForms dialogFormRcvd = new DialogsForms(this, e.Message.ScreenName);//при DialogsForms() тоже самое зависание.
dialogFormRcvd.Show();
}
{
DialogsForms dialogFormRcvd = new DialogsForms(this, e.Message.ScreenName);//при DialogsForms() тоже самое зависание.
dialogFormRcvd.Show();
}
P.S.: Библиотека в аттаче, весь свой проект не выкладываю - смысла не вижу и там такой бардак в камментариях, что просто стыдно это показывать. :)
И еще... Пробовал играться с Invoke, InvokeRequired, но толку не вышло (плохо понял как этим пользоваться, но, как мне кажется, проблема не в этом, хотя...)
Посмотрите в контексте какого треда вызывается проблемный обработчик.
пардон, что оживляю давнюю тему, но нашлось ли решение проблемы? столкнулся с аналогичной..