private void DoWork() { try { Trace.Write("DoWork", "-------------------- Doing Work ------------"); m_Subject = new SubjectImpl(); m_Subject.Message = new TextBox(); Observer observer = new Observer(m_Subject); //Worker worker = new Worker(); NotifyLogger += observer.UpdateLog; NotificationEvent += ObserverNotified; Message.TextChanged+=Message_TextChanged; //worker.Attach(); //worker.Cancel = false; ////worker.Bereken(m_ProjectId, m_RootDir, m_Sof, m_Saf); DoDummyWork(); Message.Text += "Gereed.\n\r"; } catch (ThreadInterruptedException) { Message.Text = "interrupted!"; Console.WriteLine("~~~~ thread2 interrupted..."); } catch (Exception ex) { Message.Text = "interrupted!!" + ex.Message; if (NotifyLogger != null) NotifyLogger("\n" + ex.Message); if (NotifyLogger != null) NotifyLogger("\n" + ex.StackTrace); Console.Out.Write(ex); Console.WriteLine("~~~~ thread2 error..."); } finally { Console.WriteLine("~~~~ thread2 initData2 ends ...~~~~"); //button1.Enabled = true; } }
void Page_Load(object sender, EventArgs e) { m_TaskIds = new Queue<int>(); m_AsyncResults = new Dictionary<int, IAsyncResult>(); m_AsyncCallbacks = new Dictionary<int, AsyncCallback>(); if (!IsPostBack) { m_MessageQ = new Queue<string>(); Session["ObserverNotified"] = new Queue<string>();//Cross-process? Session["ObserverNotified-Stacked"] = new Stack<string>();//Cross-process? Session["TotalJobQueue"] = new Queue<string>(); Session["countMaxNotification"] = 0; Session["countMaxNotifications"] = 0; Session["TaskQ-Empty"] = true; //init } if (IsAsync) { m_Subject = new SubjectImpl(); m_Subject.Message = new TextBox(); m_Observer = new Observer(m_Subject); // Create an instance of the test class. m_Producer = new AsyncDemo(HttpContext.Current.Session, HttpContext.Current.Trace); m_Producer.NotifyLogger += m_Observer.UpdateLog; m_Producer.AsyncNotificationEvent += ObserverNotified; m_Producer.Attach(); Label1.Text = "Page_Load: thread #" + System.Threading.Thread.CurrentThread.GetHashCode(); BeginEventHandler bh = new BeginEventHandler(this.BeginGetAsyncData); EndEventHandler eh = new EndEventHandler(this.EndGetAsyncData); AddOnPreRenderCompleteAsync(bh, eh); // Initialize the WebRequest. string address = "http://localhost/"; m_MyRequest = System.Net.WebRequest.Create(address); } }