Есть класс который обрабатывает события от com-порта. Полученная информация передается с помощью событий в главную форму для дальнейшей обработки и еще в одну форму где отображается log информация о работе с портом.
В log форме вывожу полученную информацию потоко-безопасно для WinForm(вывожу в ListView):
....
public void Invoke(MethodInvoker methodToInvoke)
{
if (InvokeRequired)
{
base.Invoke(methodToInvoke);
}
else
{
methodToInvoke();
}
}
private void SetListView_Log(string sItem1,
string sItem2,
string sItem3,
string sItem4,
string sItem5)
{
Invoke(delegate
{
ListViewItem LVI = new ListViewItem(sItem1);
LVI.SubItems.Add(sItem2);
LVI.SubItems.Add(sItem3);
LVI.SubItems.Add(sItem4);
LVI.SubItems.Add(sItem5);
LVI.SubItems.Add(DateTime.Now.ToString());
ListView_Log.Items.Add(LVI);
if (ListView_Log.Items.Count > 1000)
RemoveItem(ListView_Log.Items.Count - 1);
}
);
}
В результате часть событий не отображаются в форме. Т.е. просто пропадают. Часть приходит с опозданием. В чем может быть проблема?