reza_mostafavi63
شنبه 17 اردیبهشت 1390, 16:26 عصر
با سلام به دوستان مشكل من در ايجاد يك event براي كلاسي هست كه طراحي كردم . تنها چيزي هم كه ميخوام اينه كه به صورت عادي (مثل event هاي Button , Timer , TextBox, ...) باهاش تو برنامه كار كنم . ولي نميدونم اشكال كدم كجاس
كدها به صورت زير تعريف شده اند :
class Class1
{
public delegate void Class1Handle(int i);
public event Class1Handle ShowNumber;
public Class1()
{
Thread T1 = new Thread(new ThreadStart(StartWorking));
T1.IsBackground = true;
T1.Start();
}
int i = 0;
void StartWorking()
{
while (true)
{
Thread.Sleep(100);
ShowNumber(i++);
}
}
}
اينم كد فرم اصلي :
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Class1 C1 = new Class1();
C1.ShowNumber += new Class1.Class1Handle(C1_ShowNumber);
}
void C1_ShowNumber(int i)
{
Text = i.ToString();
}
}
}
متاسفانه در هنگام اجرا با خطاي Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on. مواجه ميشم .
چرا نميتونم عين كامپوننت هاي ديگه از Event تش استفاده كنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟http://forum.p30world.com/images/New-smile/N_aggressive%20%282%29.gif
Mer28+2
كدها به صورت زير تعريف شده اند :
class Class1
{
public delegate void Class1Handle(int i);
public event Class1Handle ShowNumber;
public Class1()
{
Thread T1 = new Thread(new ThreadStart(StartWorking));
T1.IsBackground = true;
T1.Start();
}
int i = 0;
void StartWorking()
{
while (true)
{
Thread.Sleep(100);
ShowNumber(i++);
}
}
}
اينم كد فرم اصلي :
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Class1 C1 = new Class1();
C1.ShowNumber += new Class1.Class1Handle(C1_ShowNumber);
}
void C1_ShowNumber(int i)
{
Text = i.ToString();
}
}
}
متاسفانه در هنگام اجرا با خطاي Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on. مواجه ميشم .
چرا نميتونم عين كامپوننت هاي ديگه از Event تش استفاده كنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟http://forum.p30world.com/images/New-smile/N_aggressive%20%282%29.gif
Mer28+2