fortex
دوشنبه 02 اردیبهشت 1392, 10:27 صبح
سلام دوستان من تازه کار با thread را شروع کردم و برای اینکه یاد بگیرم میخواستم این کد را برام توضیح بدبد:
namespace WindowsFormsApplication15
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
#region "Timer1 Thread"
private delegate void _timer1Delegate(string phrase);
private delegate void _timer1DoneDelegate();
//*/////////////////////////////////////////////////////////////
private void t1()
{
try
{
int i = 1;
Invoke(new _timer1Delegate(timer1Action), new object[] { i.ToString() });
System.Threading.Thread.Sleep(5000); //waits 1 second
Invoke(new _timer1DoneDelegate(timer1ActionDone));
}
catch (System.Exception ex) { }
}
//*///////////////////////////////////////////////////////////////////////
private void timer1Action(string phrase)
{
this.label1.Text = null;
this.label1.Text = phrase;
}
//*///////////////////////////////////////////////////////////////////////
private void timer1ActionDone()
{
this.label1.Text += "- Done";
System.Threading.Thread t = new System.Threading.Thread(t2);
t.IsBackground = true;
t.Start();
}
//*///////////////////////////////////////////////////////////////////////
#endregion
#region "Timer2 Thread"
private delegate void _timer2Delegate(string phrase);
private delegate void _timer2DoneDelegate();
//*///////////////////////////////////////////////////////////////////////
private void t2()
{
try
{
for (int i = 0; i < 21; i++)
{
Invoke(new _timer2Delegate(timer2Action), new object[] { i.ToString() });
System.Threading.Thread.Sleep(1000); //waits 1 second
}
Invoke(new _timer2DoneDelegate(timer2ActionDone));
}
catch (System.Exception ex) { }
}
//*///////////////////////////////////////////////////////////////////////
private void timer2Action(string phrase)
{
this.label2.Text = null;
this.label2.Text = phrase;
}
//*///////////////////////////////////////////////////////////////////////
private void timer2ActionDone()
{
this.label2.Text += "-Done";
MessageBox.Show("All tasks are done");
}
//*///////////////////////////////////////////////////////////////////////
#endregion
private void Form1_Load(object sender, EventArgs e)
{
this.timer1.Enabled = true;
}
private void timer1_Tick_1(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(t1);
t.IsBackground = true;
timer1.Enabled = false;
t.Start();
}
}
}
یه توضیح کلی
و
اینکه invoke چیه
و
delegate چیه
و
IsBackground چیه
و
یه توضیح در مورد این سه خط :
#region "Timer1 Thread"
private delegate void _timer1Delegate(string phrase);
private delegate void _timer1DoneDelegate();
و اینکه اگه من بخوام توی این ترد کدنویسی کنم کدم را کجاش اید وارد کنم؟
مثلا کد زیر کجای thread باید وارد کنم که بعد از پنج ثانیه اجرا بشه و تموم بشه براه سراغ ترد بعدی؟
this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point((xi - 10), (yi - 20));
uint X = (uint)Cursor.Position.X;
uint Y = (uint)Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
ممنون
namespace WindowsFormsApplication15
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
#region "Timer1 Thread"
private delegate void _timer1Delegate(string phrase);
private delegate void _timer1DoneDelegate();
//*/////////////////////////////////////////////////////////////
private void t1()
{
try
{
int i = 1;
Invoke(new _timer1Delegate(timer1Action), new object[] { i.ToString() });
System.Threading.Thread.Sleep(5000); //waits 1 second
Invoke(new _timer1DoneDelegate(timer1ActionDone));
}
catch (System.Exception ex) { }
}
//*///////////////////////////////////////////////////////////////////////
private void timer1Action(string phrase)
{
this.label1.Text = null;
this.label1.Text = phrase;
}
//*///////////////////////////////////////////////////////////////////////
private void timer1ActionDone()
{
this.label1.Text += "- Done";
System.Threading.Thread t = new System.Threading.Thread(t2);
t.IsBackground = true;
t.Start();
}
//*///////////////////////////////////////////////////////////////////////
#endregion
#region "Timer2 Thread"
private delegate void _timer2Delegate(string phrase);
private delegate void _timer2DoneDelegate();
//*///////////////////////////////////////////////////////////////////////
private void t2()
{
try
{
for (int i = 0; i < 21; i++)
{
Invoke(new _timer2Delegate(timer2Action), new object[] { i.ToString() });
System.Threading.Thread.Sleep(1000); //waits 1 second
}
Invoke(new _timer2DoneDelegate(timer2ActionDone));
}
catch (System.Exception ex) { }
}
//*///////////////////////////////////////////////////////////////////////
private void timer2Action(string phrase)
{
this.label2.Text = null;
this.label2.Text = phrase;
}
//*///////////////////////////////////////////////////////////////////////
private void timer2ActionDone()
{
this.label2.Text += "-Done";
MessageBox.Show("All tasks are done");
}
//*///////////////////////////////////////////////////////////////////////
#endregion
private void Form1_Load(object sender, EventArgs e)
{
this.timer1.Enabled = true;
}
private void timer1_Tick_1(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(t1);
t.IsBackground = true;
timer1.Enabled = false;
t.Start();
}
}
}
یه توضیح کلی
و
اینکه invoke چیه
و
delegate چیه
و
IsBackground چیه
و
یه توضیح در مورد این سه خط :
#region "Timer1 Thread"
private delegate void _timer1Delegate(string phrase);
private delegate void _timer1DoneDelegate();
و اینکه اگه من بخوام توی این ترد کدنویسی کنم کدم را کجاش اید وارد کنم؟
مثلا کد زیر کجای thread باید وارد کنم که بعد از پنج ثانیه اجرا بشه و تموم بشه براه سراغ ترد بعدی؟
this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point((xi - 10), (yi - 20));
uint X = (uint)Cursor.Position.X;
uint Y = (uint)Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
ممنون