Ниже приведен мой файл класса,
//online.cs (Пользовательский онлайн -обнаружение)
/*Идеи реализации программы:
У пользователя есть следующие атрибуты:
Имя: имя пользователя
SessionId: идентификатор пользователя, единственный показывает пользователя через него
Где -то: дополнительная информация, где пользователь в настоящее время находится
В прошлое время: время входа в систему пользователя
Время: обновить время на этот раз
На клиенте, используя iframe, загрузку страницы обновления и обновлением времени, соответствующего его имени каждые XX секунды, это означает, что он все еще в
На стороне сервера создайте поток Guardian, запускайте один раз в фиксированное время, а затем определите, превышается ли временный интервал во всех текущих списках пользователей
Если указанное время превышено, пользователь удаляется из онлайн -списка, чтобы вы могли обнаружить, является ли пользователь в Интернете, и если он один
Напишите обработку в автономном режиме пользователя, чтобы решить многих людей, которые спрашивают: обработка пользователя после случайного повесителя.
*/
#Define_debug
Пространство имен Сохолифе
{{
Использование системы;
Использование System.data;
Использование System.data.sqlClient;
Использование System.collections;
Использование System.Threading;
Использование System.Web;
Использование System.diagnostics;
// определить структуру
Общественный пользователь Struct
{{
Общественное название строки;
Public DateTime в прошлое время;
Общедоступный DateTime Curtime;
Public String SessionId;
публичная строка где -то;
}
// Определить онлайн -класс пользователя
Общедоступный класс онлайн -обучение
{{
Private Static ArrayList_alluser;
Public Arraylist Alluser
{{
geturn_alluser;}
set {_alluser = value;}
}
public OnlineUser () // построить функцию
{{
if (_allurs == null)
{{
_alluser = new ArrayList ();
}
}
// Описание функции: Добавьте текущего пользователя в онлайн -список
// Если данные пользователя все еще находятся в онлайн -списке, временно не разрешается войти в пользователь, предлагая пользователю существовать
Public Booladdusertoonline (пользователь пользователя)
{{
// вам нужно определить, находится ли пользователь в списке пользователей
if (_allurs == null)
{{
_alluser.add (пользователь);
Return (true);
}
еще
{{
для (int i = 0; i <_alluser.count; i ++)
{{
// Cycle Srade, есть ли пользователь уже существует
soholife.user tester = (soholife.user) _alluser [i];
If (tempuser.sessionid.equals (user.sessionid) && tempuser.name.equals (user.name))
{{
Вернуть (false);
}
}
_alluser.add (пользователь);
Return (true);
}
}
// Описание функции: Определите, является ли пользователь в Интернете, эта часть не используется на данный момент
// возвращаемое значение: true представляет онлайн, ложь нет
Publicboolean Isauseronline (название строки)
{{
// вам нужно определить, находится ли пользователь в списке пользователей
if (_allurs == null)
{{
Вернуть (false);
}
еще
{{
для (int i = 0; i <_alluser.count; i ++)
{{
// Cycle Srade, есть ли пользователь уже существует
soholife.user tester = (soholife.user) _alluser [i];
if (tester.name.equals (name))
{{
Return (true);
}
}
Вернуть (false);
}
}
// Описание функции: Обновление пользователя онлайн
// Возвращение значения: последний список пользователей онлайн
Public Boolean Checkuseronline (название строки)
{{
// вам нужно определить, находится ли пользователь в списке пользователей
if (_alluser! = null)
{{
для (int i = 0; i <_alluser.count; i ++)
{{
soholife.usertempuser = (soholife.user) _alluser [i];
// сначала определить, является ли текущий пользователь собой самим
if (tester.name.equals (name))
{{
// Обновление пользовательского онлайн времени
tempuser.curtime = datetime.now;
Alluser [i] = Tempuser;
Return (true);
}
}
}
Вернуть (false);
}
}
/*
Давайте начнем создавать класс ниток Guardian:
(Примечание: здесь, когда я начал писать
После многих проблем я, наконец, решил сдаться и использовать существующий формат, но я просто понимал один кусок от счастья.
Будет использовать его, чтобы написать еще один режим)
*/
Общедоступный класс Ceckonline
{{
Const in Delay_times = 5000;
Const in Delay_seconds = 30;
Приватный поток;
Private Static Bool_flag = false;
Public Feekonline ()
{{
if (! _flag)
{{
_Flag = true;
this.thread = new Thread (New ThreadStart (ThreadProc));
Thread.name = онлайн -пользователь;
Thread.Start ();
}
}
Интернет void threadproc ()
{{
Пока (правда)
{{
Soholife.onlineUseUsr test = new Soholife.onlineUseUser ();
для (int i = 0; i <temp.alluser.count; i ++)
{{
пользователь tmpuser = (пользователь) temp.alluser [i];
// я добавил последнее время пользователя до 80 секунд, а затем сравнивал с текущим временем, небольшим и текущим временем,
// это означает, что пользователь приостановил линию, затем его запись удалена
if (tmpuser.curtime.addseconds (dower_seconds) .compareto (datetime.now) <0)
{{
temp.alluser.removeat (i);
}
}
Thread.sleep (dower_times);
}
}
}
}
Заявление о компиляции: CSC /T: Library /out:../bin/online.dll /r: System.dll Online.cs