控件跨线程调用 异步回调 备忘_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 控件跨线程调用 异步回调 备忘

控件跨线程调用 异步回调 备忘

 2010/11/16 11:46:00  pgy20032000  http://pgy20032000.javaeye.com  我要评论(0)
  • 摘要:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Runtime.Remoting.Messaging;namespacePlayGround
  • 标签:控件 跨线程调用 异步回调

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Runtime.Remoting.Messaging;

?

namespace PlayGround

{

?? ?public partial class Form1 : Form

?? ?{

?? ? ? ?public Form1()

?? ? ? ?{

?? ? ? ? ? ?InitializeComponent();

?? ? ? ? ? ?lagDele = Lag;

?? ? ? ? ? ?callBack = ResultCallback;

?? ? ? ?}

?

?? ? ? ?private void BeginAsyncCall_Click(object sender, EventArgs e)

?? ? ? ?{

?? ? ? ? ? ?lagDele.BeginInvoke(callBack, null);

?? ? ? ?}

?

?? ? ? ?private void Lag()

?? ? ? ?{

?? ? ? ? ? ?System.Threading.Thread.Sleep(3000);

?? ? ? ? ? ?SetMessage("bingo");

?? ? ? ?}

?

?? ? ? ?private void SetMessage(string text)

?? ? ? ?{

?? ? ? ? ? ?if (this.BeginAsyncCall.InvokeRequired)

?? ? ? ? ? ?{

?? ? ? ? ? ? ? ?SetTextCallback d = new SetTextCallback(SetMessage);

?? ? ? ? ? ? ? ?this.Invoke(d, new object[] { text });

?? ? ? ? ? ?}

?? ? ? ? ? ?else

?? ? ? ? ? ?{

?? ? ? ? ? ? ? ?this.BeginAsyncCall.Text = text;

?? ? ? ? ? ?}

?

?? ? ? ?}

?

?? ? ? ?private void ResultCallback(IAsyncResult ar)

?? ? ? ?{

?? ? ? ? ? ?//lagDel del = (lagDel)((AsyncResult)ar).AsyncDelegate;

?? ? ? ? ? ?//del.EndInvoke(ar);

?? ? ? ? ? ?MessageBox.Show("done");

?? ? ? ?}

?

?? ? ? ?private delegate void lagDel() ;

?? ? ? ?lagDel lagDele;

?? ? ? ?private AsyncCallback callBack;

?? ? ? ?delegate void SetTextCallback(string text);

?

?? ?}

}


发表评论
用户名: 匿名