技术开发 频道

Silverlight 4中五种多线程编程技巧

      public ThreadPoolTestPage()

  {

  InitializeComponent();

  }

  
private void txtMsgQueueUserWorkItem_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)

  {

  System.Threading.ThreadPool.QueueUserWorkItem(DoWork, DateTime.Now);

  }

private void DoWork(object state)

  {

  DateTime dtJoin
= (DateTime)state;

  DateTime dtStart
= DateTime.Now;

  System.Threading.Thread.Sleep(
3000);

  DateTime dtEnd
= DateTime.Now;

  this.Dispatcher.BeginInvoke(()
=>

  {

  txtMsgQueueUserWorkItem.Text
+= string.Format("\r\nInto-quene time: {0}start time: {1}end time: {2}",

  dtJoin.ToString(), dtStart.ToString(), dtEnd.ToString());

  });

  }

  
private void txtRegisterWaitForSingleObject_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)

  {

  System.Threading.AutoResetEvent done
= new System.Threading.AutoResetEvent(false);

  RegisteredWaitHandlePacket packet
= new RegisteredWaitHandlePacket();

  packet.Handle
= System.Threading.ThreadPool.RegisterWaitForSingleObject

  (

  done,

  WaitOrTimer,

  packet,

  
100,

  
false

  );

0
相关文章