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

نام تاپیک: مشکل با استفاده از ترد ها در برنامه

  1. #1
    کاربر دائمی آواتار senaps
    تاریخ عضویت
    آذر 1387
    محل زندگی
    خونمون!
    سن
    31
    پست
    210

    مشکل با استفاده از ترد ها در برنامه

    با سلام.... بنده با استفاده از WCF/WPF/Linq به برنامه‌ی کوچیک نوشتم! که وسط کار تو یه قسمت که از ترد ها استفاده کردم گیر افتادم....

    مسئله اینه که من میخوام به محض اینکه کاربر از تکست باکس خارج شد، یه تردی اجرا بشه و یه سری عملیات صورت بگیره در حینی که کاربر داره یه کار دیگه میکنه!

    حالا داستان چیه:

    من یه تکست باکس برای گرفتن نام کاربری دارم... میخوام به محض خروجش از تکست باکس، متدی برای چک کردن یوزر نیم اجرا بشه:

    Thread confirmuserthread = new Thread(new ThreadStart( ConfirmUsername));
    confirmuserthread.Start();


    خوب... حالا این متد کانفریم که من تو ترد اجراش میکنم این کارا رو میکنه::



    username = txt_Username.Text; //this will set the username to the txt_username method!
    ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client();
    // it check's if username is free to use!
    if (obj.ConfirmUsername(username))
    {
    isValidUsername = true;

    }
    else
    {
    tblock_UserName.Text = " نام کاربری شما قابل استفاده نمی باشد، لطفا نام کاربری دیگری انتخاب نمایید";
    tblock_UserName.Visibility = System.Windows.Visibility.Visible;
    tblock_UserName.Text = "";
    }


    داستان اینه که میاد یوزر نیم رو با دیتابیسم(سرویس) چک میکنه... اگر قبلا وجود داشت، پیغام خطایی رو نشون میده در یک تکست بلاک! اگر هم نه که هیچی یه مقداری رو True میکنه تا من بتونم با بررسیش، در هنگام کلیک باتن ذخیره اقدام به ذخیره‌ی نام کاربری و پسورد بکنم....

    (مسئله اینه که من برای نام‌های کاربری یه جدول و برای رمز های عبور یه جدول دارم که بتونم خاصیت هایی مثل تغییر نام کاربری و همچنین رد گیری تغییر پسورد ها و ... رو داشته باشم!!!)

    حالا وقتی میخوام از برنامه استفاده بکنم، برنامه الکی ایراد میگیره که متغییر مربوطه در اختیار یه ترد دیگه‌هستش.... در صورتی که اینجوری نیست....

    ایرادش هم از اینجاست:

     username = txt_Username.Text; 


    به نظرتون باید چیکار کنم؟! اگر لازم داشتید بگید تا براتون کد ها رو بذارم ولی خوب حجمش بالاست و ممکنه اذیت بشید سر تستش.... هر قسمتی از کد ها هم لازم بود بفرمایید تا ارائه بکنم خدمتتون....

  2. #2

    نقل قول: مشکل با استفاده از ترد ها در برنامه...

    از طریق ترد دیگه نمیتونید به کنترل های فرم که روی ترد دیگر اجرا میشند دسترسی داشته باشید. شما بعد از اینکه نتیجه بدست آمد توسط یک delegate از ترد اصلی بخواهید پیغام رو بده.
            private delegate void myDelegate(bool b);
    private string userName;
    private bool isValidUsername;

    private void txt_Username_Leave(object sender, EventArgs e)
    {
    userName = txt_Username.Text;

    Thread confirmuserthread = new Thread(new ThreadStart(ConfirmUsername));
    confirmuserthread.Start();
    }
    private void ConfirmUsername()
    {
    if (userName != string.Empty && userName != null)
    {
    ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client();
    isValidUsername = obj.ConfirmUsername(username);

    myDelegate del = new myDelegate(setMessage);
    this.lblMessage.Invoke(del, isValidUsername);
    }
    }
    private void setMessage(bool flag)
    {
    if (flag)
    {
    tblock_UserName.Text = "نام کاربری معتبر است";
    }
    else
    {
    tblock_UserName.Text = " نام کاربری شما قابل استفاده نمی باشد، لطفا نام کاربری دیگری انتخاب نمایید";
    }
    tblock_UserName.Visibility = System.Windows.Visibility.Visible;
    }

  3. #3
    کاربر دائمی آواتار senaps
    تاریخ عضویت
    آذر 1387
    محل زندگی
    خونمون!
    سن
    31
    پست
    210

    نقل قول: مشکل با استفاده از ترد ها در برنامه...

    از دلیگیت ها بدم میاد واقعا..... راه حلی غیر از این نیست درسته؟
    اگر براتون امکان داره، یه خورده کد های مربوط به دلیگیت رو توضیح میکنین؟ اخه من فقط یکی از کنترل هایی که داره از ترد استفاده میکنه رو اینجا اوردم برای مثال و چندین کنترل دیگه هم دارم رو فرم و باید برا همشون دلیگیت درست بکنم و استفاده بکنم ازش....

    اون جاهایی که "" رو تبدیل به نال یا امپتی کردین در خط 14، روش قبلی خودم از چه لحاظی مشکل ایجاد میکرد؟ منظورم اینه که از لحاظ حافظه یا باگ و اینا داره؟ من تو اکثر پروژه هام از نال و امپتی استفاده میکردم ولی سرعت کارم رو با "" بالاتر بردم؟

  4. #4
    کاربر دائمی آواتار senaps
    تاریخ عضویت
    آذر 1387
    محل زندگی
    خونمون!
    سن
    31
    پست
    210

    نقل قول: مشکل با استفاده از ترد ها در برنامه...

    با سلام....
    دوست عزیز، روش شما رو تست کردم و متاسفانه مشکل رو حل نمی‌کنه....( البته اصل کد ارائه شده توسط شما رو نتونستم استفاده بکنم و مجبور شدم جاسازی بکنم با رعایت شرایط ساخت دلیگیت توسط شما ولی بازم همون ارور رو میده متاسفانه....
    میشه کمی راهنمایی بکنین یا با کمترین تغییر تو کد های خودم انجامش بدین؟ یا اینکه اجباریه اینجوری کد زدن برا دلیگیت؟ متاسفانه تمام منابع در موردش هم سخت توضیح دادن و نمیشه ازشون چیزی فهمید!

تاپیک های مشابه

  1. مشکل در استفاده از توابع sql در برنامه
    نوشته شده توسط mostafa_tak2000 در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 30 شهریور 1392, 10:04 صبح
  2. مشکل در استفاده از تقویم شمسی برای برنامه ریزی ماهانه
    نوشته شده توسط Hello,World!! در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 8
    آخرین پست: چهارشنبه 22 خرداد 1392, 15:29 عصر
  3. سوال: مشکل در استفاده از وب سرویس در برنامه
    نوشته شده توسط crazy_1892 در بخش C#‎‎
    پاسخ: 9
    آخرین پست: سه شنبه 25 بهمن 1390, 23:21 عصر
  4. سوال: مشکل در استفاده از کریستال ریپرت در برنامه بعد از اتصال به بنک
    نوشته شده توسط a_123123123123 در بخش گزارش سازی با Crystal Report
    پاسخ: 4
    آخرین پست: جمعه 24 تیر 1390, 19:51 عصر
  5. پاسخ: 1
    آخرین پست: پنج شنبه 14 مرداد 1389, 10:52 صبح

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

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