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

نام تاپیک: نخ و کنترلهاي فرم در دات نت ( #C )

  1. #1
    کاربر دائمی آواتار ایمان اختیاری
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    یه جای ایران عزیز
    سن
    40
    پست
    277

    Question نخ و کنترلهاي فرم در دات نت ( #C )

    در دات نت کلاسي هست براي استفاده از نخ ها
    خب . مسئله ي ما به اين صورت هست ..
    فرمي داريم که دو دکمه و دو listbox داره ..
    دو نخ تعريف شده که وظيفه ي اونا اينکه که هر کدوم در ليست باکس خودش شروع کنه از يک تا فرضا 1000 رو چاپ کنه .
    با اين خصوصيت که هر نخ حدود يک ثانبه خواب داشته باشه و اطلاعات جوري نشون داده بشه که فرم فريز نشه و همچنين همه ي اعداد يکباره نشون داده نشن ( يعني در هر ثانيه يک عدد جديد به ليست باکس اضافه بشه )
    مواردي که مهم هستن بگم خدمتتون :
    1-چون از طراحي خود دات نت داريم استفاده مي کنيم پس توليد کدهاي ايجاد کنترل ها رو نمي خوايم ( توي MSDN چنين چيزي بود ولي اصلا جالب به نظر نمي رسيد )
    2- چون کنترل ها رو خود دات نت مي سازه -> اين کنترل ها توسط نخ Main ايجاد و مديريت مي شن پس ما اينجا يه مشکل داريم که بخوايم از نخ هاي ديگه که خودمون داريم مي سازيم به اين کنترل ها به راحتي دسترسي داشته باشيم

    اين مسئله توي سرورهاي Winsocket خيلي حياتي و به در بخورن ..
    اگه کسي از دوستان با اين موارد برخورد داشته متشکر مي شم راهنمايي ام کنه

  2. #2
    کاربر دائمی آواتار Ali_Mor
    تاریخ عضویت
    تیر 1382
    محل زندگی
    کره خاک، البته بصورت موقتی
    پست
    259

    نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    - چون کنترل ها رو خود دات نت مي سازه -> اين کنترل ها توسط نخ Main ايجاد و مديريت مي شن پس ما اينجا يه مشکل داريم که بخوايم از نخ هاي ديگه که خودمون داريم مي سازيم به اين کنترل ها به راحتي دسترسي داشته باشيم
    اینجا رو ببین:
    http://www.barnamenevis.org/sh...d.php?t=149308

  3. #3
    کاربر دائمی آواتار ایمان اختیاری
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    یه جای ایران عزیز
    سن
    40
    پست
    277

    نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    بله ... البته این مثال رو دیده بودم ولی این مثال برای کنترل های ساده خوب جواب می ده نه مثلا DataGrid یا مثلا ListBox
    البته یکی از دوستان گفته بود می شه نخ رو از نخ Main مشتق کنی ... مثه فرزند والدی .. در این مورد چیزی می دونید ؟

  4. #4
    کاربر دائمی آواتار mostafaaa
    تاریخ عضویت
    دی 1386
    محل زندگی
    جزیره کیش
    پست
    723

    نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    سلام دوست من
    خوب مشکل کجاست شما، به راحتی میتونید این کار با استفاده از دو تا نخ و یه Event انجام بدین !!
     public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    private delegate void MyEventHandler(ListBox sender,int i);
    private MyEventHandler Handler;
    private event MyEventHandler MyEvent;
    private Thread T1;
    private Thread T2;
    private void Form1_Load(object sender, EventArgs e)
    {
    this.MyEvent += new MyEventHandler(Form1_MyEvent);
    }
    private void button1_Click(object sender, EventArgs e)
    {
    T1 = new Thread(Thread1);
    T1.Start();
    }
    private void button2_Click(object sender, EventArgs e)
    {
    T2 = new Thread(Thread2);
    T2.Start();
    }
    private void Thread1()
    {
    for (int i = 0; i <= 100; i++)
    {
    MyEvent(this.listBox1, i);
    Thread.Sleep(1000);
    }
    }
    private void Thread2()
    {
    for (int i = 0; i <= 100; i++)
    {
    MyEvent(this.listBox2, i);
    Thread.Sleep(1000);
    }
    }
    private void Form1_MyEvent(ListBox sender, int i)
    {
    if (sender.InvokeRequired)
    {
    Handler = new MyEventHandler(Form1_MyEvent);
    object[] parametr = { sender, i };
    sender.Invoke(Handler, parametr);
    }
    else
    {
    sender.Items.Add(i);
    }
    }

    }

    اینم پروژه مربوطه
    فایل های ضمیمه فایل های ضمیمه

  5. #5
    VIP آواتار Sajjad.Aghapour
    تاریخ عضویت
    مهر 1386
    محل زندگی
    اهل کاشانم .. روزگارم بد نیست
    پست
    1,265

    نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    امیدوارم به جوابتون رسیده باشید.کلا عناصر UI در نخ ها باید با delegate انجام بشه و به روش thread safe.....
    روش زیر یه خورده کوتاهتره

    private delegate void myDel(int i);
    private void Btn_Click(object sender, EventArgs e)
    {
    Thread t = new Thread(new ThreadStart(tread_Safe));
    t.Start();
    }

    private void tread_Safe()
    {
    for (int i = 0; i < 100; i++)
    {
    object[] obj = { i };
    myDel del = new myDel(main_Method);
    this.Invoke(del, obj);

    Thread.Sleep(2000);
    }
    }

    private void main_Method(int i)
    {
    listBox1.Items.Add(i);
    }
    Close your eyes, take a deep breath, click your heels three times, and say, "There's no better thing than Inversion of Control and Dependency Injection, generic specialization, the decorator pattern, chains of responsibilities, and extensible software."

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1387
    محل زندگی
    اصفهان
    سن
    36
    پست
    37

    نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    سلام ، من می خواستم کدهای ضمیمه و کدهای نوشته شده توسط شما را دنبال کنم تا روند کار دستم بیاد ولی بعد از سرهم بندی این پیغام را میده

     
    Error 1 The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?) C:\Documents and Settings\yez\Desktop\WindowsApplication1\WindowsAp plication1\Program.cs 3 14 WindowsApplication1


    why

  7. #7

    نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    نقل قول نوشته شده توسط tiia_kahkeshan مشاهده تاپیک
    این پیغام را میده
     
    namespace name 'Linq' does not exist

    why
    شما از چه نسخه دات نت استفاده مي كنيد ؟
    تا جايي كه من يادم اين كلاس در نسخه 3 به بعد هست و اگر از ويژوال استديو 2005 يا 2003 استفاده كنيد اين كلاس نداره
    براي اطمينان به رفرنس هاي پرژوه مراجعه كنيد.

  8. #8
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1387
    محل زندگی
    اصفهان
    سن
    36
    پست
    37

    نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    من از visual studio 2005 استفاده می کنم ، جایگزینی برای اون کلاس وجود نداره یا می تونم این کلاس را به طور مثال از نسخه دات نت به کلاسهای ویژوال اضافه کنم یا ویژوال 2008 به کلاسهای ویژوال اضافه کنم
    البته اگه میشه اونو دانلود کنم این گزینه را بگید بهتره.
    ممنون

  9. #9

    نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    نقل قول نوشته شده توسط tiia_kahkeshan مشاهده تاپیک
    من می تونم این کلاس را به طور مثال از نسخه دات نت به کلاسهای ویژوال اضافه کنم ؟ممنون
    سلام
    دوست عزيز خود دردسر نده بهترين راه ارتقاء خودت، خرجش 3 يا 4 هزار تومان كه DVD 2008 بخري(خدا پدر مادر ما رو بيامرز كه تو اون ايران بدنيا آوردن )
    من هم همين اواخر گرفتم اما اشتباه كردم بايد همون اول كه 2008 اومده بود مي گرفتم
    چون خيلي از راه كار ها مثال ها و كامپونت ها كه اين روزها از اينترنت مي گيري به 2008 و شما مثل همين مورد اين پست نمي توني ازش استفاده كني

    پس به روز باش...

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1387
    محل زندگی
    اصفهان
    سن
    36
    پست
    37

    Post نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    نقل قول نوشته شده توسط ahmadahmadi مشاهده تاپیک
    سلام
    دوست عزيز خود دردسر نده بهترين راه ارتقاء خودت، خرجش 3 يا 4 هزار تومان كه DVD 2008 بخري(خدا پدر مادر ما رو بيامرز كه تو اون ايران بدنيا آوردن )
    من هم همين اواخر گرفتم اما اشتباه كردم بايد همون اول كه 2008 اومده بود مي گرفتم
    چون خيلي از راه كار ها مثال ها و كامپونت ها كه اين روزها از اينترنت مي گيري به 2008 و شما مثل همين مورد اين پست نمي توني ازش استفاده كني

    پس به روز باش...
    خوب شما حرف خوبی می زنید اما ما وقتی موفق میشیم که از کارای پشت پرده خبر داشته باشیم البته اینو به تدریج میشه یاد گرفت.

  11. #11
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1387
    محل زندگی
    اصفهان
    سن
    36
    پست
    37

    نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    نقل قول نوشته شده توسط tiia_kahkeshan مشاهده تاپیک
    سلام ، من می خواستم کدهای ضمیمه و کدهای نوشته شده توسط شما را دنبال کنم تا روند کار دستم بیاد ولی بعد از سرهم بندی این پیغام را میده

     
    Error 1 The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?) C:\Documents and Settings\yez\Desktop\WindowsApplication1\WindowsAp plication1\Program.cs 3 14 WindowsApplication1


    why
    دوستان فرمودید توی visual studio 2005 ممکنه وجود نداشته باشه من نسخه 2008 را تهیه کردم اما باز همین پیغام را میده.why

  12. #12
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1387
    محل زندگی
    اصفهان
    سن
    36
    پست
    37

    Post نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    سلام
    ممنون با کمک آقای احمدی حل شد. مربوط به همون reference می شد.

  13. #13
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1387
    محل زندگی
    اصفهان
    سن
    36
    پست
    37

    Post نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    در تاپیک 3 صفحه 1 این if چه موقع انجام میشود و سه دستور داخل آن چه کاری انجام می دهند ؟


  14. #14
    کاربر دائمی آواتار mostafaaa
    تاریخ عضویت
    دی 1386
    محل زندگی
    جزیره کیش
    پست
    723

    نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    سلام دوست من
    در تاپیک 3 صفحه 1 این if چه موقع انجام میشود و سه دستور داخل آن چه کاری انجام می دهند ؟
    به ازای هر بار اضافه شدن به Counter داخل حلقه ها یکبار این Event اجرا میشه. و در داخل شرط هم یه نمونه از Delegate که قبلا تعریف کردیم میسازیم و با استفاده از اون اجازه دسترسی به تردی که این Event رو اجرا کرده به لیست باکس که در ترد اصلی ایجاد شده میدیم.
    امیدوارم مشکلتون حل شده باشه
    یا علی

  15. #15
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1387
    محل زندگی
    اصفهان
    سن
    36
    پست
    37

    Post نقل قول: نخ و کنترلهاي فرم در دات نت ( #C )

    سلام
    من با الگو گرفتن از برنامه قبلی اینو نوشتم اما انجام نمیشه برنامه را دنبال کنید دوستان اگه بگن اشکالم کجاست ممنون میشم.من سعی کردم past کنم اما خراب past می کرد به خاطر همین فایل را دانلود کنید.

     
    http://sites.google.com/site/sodayemarg/Home/uploud/WindowsFormsApplication1.zip?attredirects=0

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

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