نمایش نتایج 1 تا 8 از 8

نام تاپیک: نحوه پیاده سازی یک Thread

  1. #1
    کاربر دائمی آواتار sara_aryanfar
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    جایی در ایران
    پست
    1,507

    نحوه پیاده سازی یک Thread

    با سلام دوستان من می خواستم یه مثال برای نحوه پیاده سازی یک thread بزنید البته سرچ کردم اما می خوام اگر بشه یه مثال هم باشه مثلا اگر بخواهیم تعدادی رشته رو با یه threadدر یک listboxاد کنیم چطور باید این کار رو بکنیم

  2. #2

    نقل قول: نحوه پیاده سازی یک Thread

    باید از Invoke استفاده کنی

    private delegate ListViewItem del_AddItem(ListViewItem _Item);

    private ListViewItem p_invokeFunctionAddItem(ListViewItem value)
    {
    ListView1.Items.Add(value);
    }

    private void p_startThread(ListView _List)
    {
    del_AddItem g_addItem = new del_AddItem(p_invokeFunctionAddItem);
    ListViewItem g_item = new ListViewItem("Hello Guy!!!");
    g_item.SubItems.Add("I Add By Invoke");
    _List.Invoke(g_addItem,new object[]{g_item});
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    System.Threading.Thread g_thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(p_startT hread));

  3. #3
    VIP آواتار gwbasic
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    سن
    42
    پست
    982

    نقل قول: نحوه پیاده سازی یک Thread

    می تونید از کامپوننت Backgroundworker استفاده کنید که تو همین سایت آموزشش رو گذاشتم

  4. #4
    کاربر دائمی آواتار sara_aryanfar
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    جایی در ایران
    پست
    1,507

    نقل قول: نحوه پیاده سازی یک Thread

    با تشکر اطلا روش پیاده سازی یک Thread چکونه هست مثلا مشکل این کد پائین چی هست
    namespace test
    {
    public partial class Form1 : Form
    {
    int u;

    public Form1()
    {
    InitializeComponent();
    }
    private string thh()
    {
    while (u < 500)
    {
    u++;
    label1.Text = "" + u;
    }

    }
    private void button1_Click(object sender, EventArgs e)
    {
    Thread a = new Thread(thh);
    a.Start();
    }
    }
    }

  5. #5
    کاربر دائمی آواتار sara_aryanfar
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    جایی در ایران
    پست
    1,507

    نقل قول: نحوه پیاده سازی یک Thread

    خوب دوستان عزیز من یک ریسمان رو اجرا کردم به این صورت
    namespace test
    {
    public partial class Form1 : Form
    {
    int u=0;
    string m;
    public Form1()
    {
    InitializeComponent();
    Form1.CheckForIllegalCrossThreadCalls = false;

    }
    public void thh()
    {
    while (u < 500)
    {
    Thread.Sleep(100);
    u++;
    m = Convert.ToString(u);
    this.label1.Text =""+ m;
    }

    }
    private void button1_Click(object sender, EventArgs e)
    {
    Thread a = new Thread(new ThreadStart(thh));

    a.Start();
    }
    }
    }


    اما یادمه یکی از دوستان گفته بود اینطور اجرا کردن مشکل سازه به خاطر این خط کد Form1.CheckForIllegalCrossThreadCalls = false; کسی می دونه چرا؟

  6. #6
    VIP آواتار gwbasic
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    سن
    42
    پست
    982

    نقل قول: نحوه پیاده سازی یک Thread

    مشکل اینه که ThreadSafe نیست یعنی شما اجازه دادید که Thread های دیگه به فرم شما دسترسی داشته باشند و بتونن فرم رو تغییر بدن

  7. #7

    نقل قول: نحوه پیاده سازی یک Thread

    نقل قول نوشته شده توسط sara_aryanfar مشاهده تاپیک
    خوب دوستان عزیز من یک ریسمان رو اجرا کردم به این صورت
    namespace test
    {
    public partial class Form1 : Form
    {
    int u=0;
    string m;
    public Form1()
    {
    InitializeComponent();
    Form1.CheckForIllegalCrossThreadCalls = false;

    }
    public void thh()
    {
    while (u < 500)
    {
    Thread.Sleep(100);
    u++;
    m = Convert.ToString(u);
    this.label1.Text =""+ m;
    }

    }
    private void button1_Click(object sender, EventArgs e)
    {
    Thread a = new Thread(new ThreadStart(thh));

    a.Start();
    }
    }
    }


    اما یادمه یکی از دوستان گفته بود اینطور اجرا کردن مشکل سازه به خاطر این خط کد Form1.CheckForIllegalCrossThreadCalls = false; کسی می دونه چرا؟
    دوست عزیز Invoke که گفتم این مشکل رو حل میکنه البته روشی که گفتید هم کار میکنه اما یه جاهایی به مشکل می خورید مثلا فرض کنید یک thread یه thread دیگه رو ایجاد کنه و بخواد به مثلا lable دسترسی داشته باشه اینجا خطا میده و دیگه اون روش جواب نمیده اما Invoke جواب میده

  8. #8

    نقل قول: نحوه پیاده سازی یک Thread

    ظاهرا نیاز به استفاده از Invoke فقط در Windows Forms هست. درمورد WPF چنین چیزی ندیدم.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •