powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / (потеря указателя) Пусть не покажется странным мой вопрос...
1 сообщений из 1, страница 1 из 1
(потеря указателя) Пусть не покажется странным мой вопрос...
    #32485496
Tangous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть статический Datateble все колонки которого описаны в Form.

в зависимости от условий в него или добавляется ряд или делается Update существующему.

Скорость обновления приблизительно 30 раз в секунду (это часть NetFlow коллектора, кому интересно).

Через 20-30 секунд работы начинается глюк.

Или мне сообщают, что я вышел за границы массива или потерян указатель на объект и программа вылетает. Может кто-то с подобным встречался?

Часть кода ниже.



private void rsvr_DataReady(DataTable inputData)
{
int day=time.Day;
int var;
uint ourIP=0;
uint octetsIn=0;
uint octetsOut=0;
byte code=0;
DataRow[] dr;
foreach(DataRow datrow in inputData.Rows)
{


var=variant((int)((ushort)datrow[3]),(int)((ushort)datrow[4]), internalIntNumber);
switch (var)
{
case 1:
ourIP=(uint)datrow[1];
octetsIn=(uint)datrow[5];
octetsOut=0;
code=1;
break;
case 2:
break;
case 3:
ourIP=(uint)datrow[1];
octetsIn=(uint)datrow[5];
octetsOut=0;
code=0;
break;
case 4:
ourIP=(uint)datrow[0];
octetsIn=0;
octetsOut=(uint)datrow[5];
code=0;
break;
default:
break;
}


if(var==0 || var==2)continue;



string filtr="IP="+ourIP+" AND DAYOFMONTH="+day;
dr=StaticDataTableInMemory.Select(filtr);
DataRow myRow;



if(dr.Length==0)
{// в базе нет такого IP, надо добавить
myRow = StaticDataTableInMemory.NewRow();
myRow["IP"] =(double)ourIP;
myRow["DAYOFMONTH"] = day;
myRow[2] = (new IPAddress((long)((uint)ourIP))).ToString();
myRow[3] = (double)octetsIn;
myRow[4] = (double)octetsOut;
myRow[5] = code;

try
{
StaticDataTableInMemory.Rows.Add(myRow);
}
catch (Exception e)
{
Console.WriteLine("!!! "+e.ToString());
}

}
else
{// такой IP есть. Надо апдейтить
try
{
dr[0][0]=dr[0][0];
dr[0][1]=dr[0][1];
dr[0][2]=dr[0][2];
dr[0][3]=(double)((int)((double)dr[0][3])+(int)((double)octetsIn));
dr[0][4]=(double)((int)((double)dr[0][4])+(int)((double)octetsOut));
dr[0][5]=code;
}
catch (Exception e)
{
Console.WriteLine("@@@ "+e.ToString());
}
}
}



// необязательный элемент к моему вопросу, но для полноты...
private int variant(int isnmp,int osnmp, int internalInfNumber)
{
return isnmp==internalInfNumber?osnmp==0?2:4:osnmp==0?1:3;
}
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / (потеря указателя) Пусть не покажется странным мой вопрос...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]