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);
?
?? ?}
}