Согласно этому посту на форумах MSDN здесь .
Когда это происходит, данные, полученные в вашем случае, погружаются в ThreadPool и вызывают QueueUserWorkItem (), который выделяет поток пула потоков для вызова вашего обработчика событий DataReceived. Затем он снова немедленно вызывает WaitCommEvent (), чтобы дождаться следующего «чего-то интересного».
blockquote>Звучит так, как будто объект
SerialPort
используетThreadPool
, поэтому, хотя событиеDataReceived
вызывается для разныхThreads
, они уже существуют вThreadPool
и, следовательно, нет накладных расходов. для создания новых.Таким образом, событие может быть запущено даже тогда, когда вы там, потому что оно будет в другой ветке.
Я смог использовать Context.CurrentHandler, который дал мне "ASP.management_default_aspx", не совсем страницу, но достаточно, чтобы получить имя страницы.
Разве Вы не можете получить это от текущего объекта HttpContext?
Возможно, что-то вроде этого:
public string GetCurrentPageName()
{
string sPath = System.Web.HttpContext.Current.Request.Url.AbsolutePath;
System.IO.FileInfo oInfo = new System.IO.FileInfo(sPath);
string sRet = oInfo.Name;
return sRet;
}
ОБНОВЛЕНИЕ:
Вы попробовали эту статью?
Как к: создайте URL из маршрута
Необходимо смочь получить его назад от Таблицы маршрутизации, которую Вы создали.