ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 11
  1. #1
    تاریخ عضویت
    2019/09/16
    نوشته ها
    49
    1
    Member

    متوقف کردن متد همیشه در حال اجرای async

    سلام،
    متدی را به صورت async تعریف کردم که قرار است با کلیک کردن دکمه b1 هر 5 ثانیه یک کاری را به صورت مکرر انجام دهد و با کلیک دوباره این متد متوقف شده و از نو کاری متفاوت انجام دهد. مشکل اینجاست که با کلیک دوباره علاوه بر کار دومی کار اولی هم اجرا میشود. میخواستم بدونم چجوری میتونم یک متد async رو متوقف کنم. ممنون میشم راهنمایی کنید.
  2. #2
    تاریخ عضویت
    2017/11/22
    نوشته ها
    364
    240
    Administrator
    سلام...اگه می تونید سورستونو قرار بدین تا بررسی شه.
  3. #3
    تاریخ عضویت
    2019/09/16
    نوشته ها
    49
    1
    Member
    متد رو با CancellationToken تونستم متوقف کنم ولی برای همیشه متوقف میشه. چجوری میتونم متد متوقف شده رو دوباره run کنم؟
  4. #4
    تاریخ عضویت
    2019/09/16
    نوشته ها
    49
    1
    Member
    private async void send_Click(object sender, EventArgs e)
    {

    data = "1234567890";




    try
    {

    serialPort1.WriteLine(data);
    MessageBox.Show(data);
    }
    catch (InvalidOperationException)
    {
    MessageBox.Show("COM Port is not available");

    }




    await PeriodicDataSendAsync();
    }






    private async Task PeriodicDataSendAsync()
    {

    await Task.Run(() =>
    {


    while (true)
    {




    Thread.Sleep(5000);
    try
    {

    serialPort1.WriteLine(data);
    MessageBox.Show(data);
    }
    catch (InvalidOperationException)
    {
    MessageBox.Show("COM Port is not available");


    }




    }
    });


    }
  5. #5
    تاریخ عضویت
    2017/11/22
    نوشته ها
    364
    240
    Administrator
    یه مثال ساده درست کردم که توش گزینه های Start، Stop و Cancel کردن Task رو داره. ببین به دردت میخوره.
    فایل های پیوست شده فایل های پیوست شده
  6. #6
    تاریخ عضویت
    2019/09/16
    نوشته ها
    49
    1
    Member
    خیلی ممنون
    در مورد این ها منبع خوبی میتونید معرفی کنید؟
    شما دو تا باتن مجزا برای شروع و توقف تسک گذاشتین من فقط میتونم یک باتن داشته باشم. توی این کدی که نوشتین اگه باتن استارت غیر فعال نشود و شما دوباره کلیک کنید چه اتفاقی میافته؟
    ممنون
  7. #7
    تاریخ عضویت
    2017/11/22
    نوشته ها
    364
    240
    Administrator
    مثال قبلی رو تغییر دادم و start و stop رو تو یه دکمه گذاشتم.
    فایل های پیوست شده فایل های پیوست شده
  8. #8
    تاریخ عضویت
    2019/09/16
    نوشته ها
    49
    1
    Member
    این درست شد ولی من یه متد async دیگه ای هم داشتم توی form1_load فراخوانی میکردم الان این کار نمیکنه
  9. #9
    تاریخ عضویت
    2019/09/16
    نوشته ها
    49
    1
    Member
    وقتی سه تا فرم در داخل یک فرم MDI در سه تا تب مختلف استفاده میشه و در هر کدوم از تب ها یک متد async فراخوانی میشه متد async درست اجرا نمیشه
  10. #10
    تاریخ عضویت
    2019/09/16
    نوشته ها
    49
    1
    Member
    اینو میتونیم داخل ایونت start بنویسیم
    _cancellationTokenSource = new CancellationTokenSource();
    var cancellationToken = _cancellationTokenSource.Token;


    var sampleTask = new Task(DoSomething, cancellationToken);
    sampleTask.Start();
    متد async من با بالا اومدن فرم اجرا میشه ولی باید با زدن دکمه send (start) اجرا بشه
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 11

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

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