WebService и потоки

 
0
 
.NET
ava
Jlekc | 01.11.2007, 12:58
Можно ли использовать при разроботки веб-сервиса потоки?
Например дергнул один сервис он создал рабочий поток.
Переодически дергаю другой сервис, для просмотра состояния выполнения рабочего потока.

Накидал ткой пример:

[WebMethod(EnableSession = true)]
public void BeginRun()
{
MethodInvoker mi = new MethodInvoker(Run);
Session["tick"] = 0;
mi.BeginInvoke(null, null);
}
//static object m_lock = new object();
delegate void MethodInvoker();
// [WebMethod(EnableSession = true)]
void Run()
{
int i = 0;
while(true)
{
i++;
//lock (m_lock)
Session["tick"] = i;
Thread.Sleep(1000);
if (i == 100)
return;
}
}
[WebMethod(EnableSession = true)]
public int GetTick()
{
//lock (m_lock)
return (int)Session["tick"];
}

Но через некоторое время в рабочим потоке сесия отваливаеть, и получаю NullRefException

added later:
Немного поправил методы, напрямю передаю указатель на сесия.
Но чтот меня это смущает, нормальный ли этот пример?

[WebMethod(EnableSession = true)]
public void BeginRun()
{
MethodInvoker mi = new MethodInvoker(Run);
Session["tick"] = 0;
mi.BeginInvoke(Session, null, null);
}
//static object m_lock = new object();
delegate void MethodInvoker(HttpSessionState mainSession);
// int m_int = 0;

[WebMethod(EnableSession = true)]
void Run(HttpSessionState mainSession)
{
int i = 0;
while(true)
{
i++;
//lock (m_lock)
mainSession["tick"] = i;
Thread.Sleep(100);
if (i == 100)
return;
}
}
Comments (1)
ava
tol05 | 01.11.2007, 14:57 #
потоки использовать можно. Это же тоже .Net приложение, правда?

Цитата (Jlekc @ 1.11.2007, 12:58 findReferencedText)
Но чтот меня это смущает, нормальный ли этот пример?

ИМХО пример как пример.

Только зачем у Run стоит атрибут [WebMethod(EnableSession = true)] ? Метод же private и не доступен для клиента.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Jlekc   tol05
advanced
Submit