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

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

  1. #1
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    Smile ارسال sms با استفاده از BackgroundWorker

    سلام
    داخل برنامم بوسیله gsm و با وقفه 5 ثانیه بین هر ارسال اقدام به ارسال پیامک میکنم
    حالا تصمیم دارم که تابع ارسال در یک نخ دیگه انجام بشه
    به همین دلیل با استفاده از نمونه کدهای داخل سایت BackgroundWorker پیاده سازی کردم
    و تابع ارسال که خودش از چندیت تابع دیگه تشکل شده با استفاده از این کد فراخوانی کردم
     void worker_DoWork(object sender, DoWorkEventArgs e)
    {
    Invoke(new MethodInvoker(delegate { send_gsm_sms(); }));
    }


    اما این روی این قطعه کد در فرم اصلی برنامه (فرم فراخواننده فرم ارسال پیامک)
          private void bn_sms_Click(object sender, EventArgs e)
    {
    f_sms fs = new f_sms();
    fs.ShowDialog();
    }


    این خطا میده:
    Exception has been thrown by the target of an invocation.

    مشکلش کجاست؟

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    توضیحات بیشتر
    همونطور که گفتم تابع ارسال sms خودش از چند تا تابع دیگه تشکیل شده بود
    الان تبدیلش کردم به یک تابع واحد و
    تابع ارسال تا جای ممکن از عناصر اضافه خالی کردم
    الان یدونه متغییر عمومی - یدونه UC و یدونه کامپوننت kylix داخلش وجود داره
    دوستان می تونن راهنمایی کنن

    تشکر

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    دوستان چقد احتمال میدین ، این خطا بخاطر استفاده از کامپوننت kylix در تابع ارسال sms باشه
    چه راهکاری به ذهنتون میرسه
    تشکر

  4. #4
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    برنامه تریس کردم

    روی این خط کد
    Invoke(new MethodInvoker(delegate { send_gsm_sms(); }));

    قبل از اینکه این خطا بده
    Exception has been thrown by the target of an invocation

    کامپوننت kylix پیغام خطایی میده با این مضمون
    ERR_LOCATION_EMPTY

    دوستان میتونن راهنمایی کنن
    تشکر

  5. #5

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    سلام
    میخواستم بپرسم دوستانی که از کامپوننت kylix استفاده میکنن اونو چطوری تهیه کردن؟ و اینکه اگه از خود سایت www.kylix.com گرفتن، چطور کرکش کردن ؟
    احتمالا درخواست من به این پست ربطی نداره
    با این حال اگه میتونین یه راهنمایی بکنین ممنونتون میشم
    با تشکر از تمام بچه هایی که دانششون رو بی هیچ توقعی در اختیار هموطنانشون میزارن

  6. #6
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    نقل قول نوشته شده توسط tooti98 مشاهده تاپیک
    سلام
    میخواستم بپرسم دوستانی که از کامپوننت kylix استفاده میکنن اونو چطوری تهیه کردن؟ و اینکه اگه از خود سایت www.kylix.com گرفتن، چطور کرکش کردن ؟
    احتمالا درخواست من به این پست ربطی نداره
    با این حال اگه میتونین یه راهنمایی بکنین ممنونتون میشم
    با تشکر از تمام بچه هایی که دانششون رو بی هیچ توقعی در اختیار هموطنانشون میزارن
    سلام
    اوهوم ربطی نداره
    دقیق خاطرم نیست از کجا اوردم
    ببین این ک.رک شده است یا نه
    موفق باشی

  7. #7

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    سلام
    مرسی نگاه کردم اینم کرک شده نیس
    بهر حال ممنونم

  8. #8

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    سلام دوستان میشه در مورد دلیل بلوکه شدن کدها در رویدادهایی از کامپوننت kylix مثل رویداد NewDeliveryReport بحث کنید
    من خودم موقع تریس کردن کدهایی که داخل رویداد NewDeliveryReport نوشته بودم متوجه شدم که به محض رسیدن کامپایلر به کدهایی که من نوشتم دیگه عملا متوقف میشه وبه خط بعد نمیره(یه جورایی هنگ میکنه)
    کسی از دوستان دلیل این مسئله رو میدونه؟
    باتشکر

  9. #9
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    نقل قول نوشته شده توسط tooti98 مشاهده تاپیک
    سلام دوستان میشه در مورد دلیل بلوکه شدن کدها در رویدادهایی از کامپوننت kylix مثل رویداد NewDeliveryReport بحث کنید
    من خودم موقع تریس کردن کدهایی که داخل رویداد NewDeliveryReport نوشته بودم متوجه شدم که به محض رسیدن کامپایلر به کدهایی که من نوشتم دیگه عملا متوقف میشه وبه خط بعد نمیره(یه جورایی هنگ میکنه)
    کسی از دوستان دلیل این مسئله رو میدونه؟
    باتشکر
    آیا کد خاصی اونجا قرار دادی ؟

  10. #10

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    با سلام

    کدهای زیر رو داخل این رویداد نوشتم:
    ID = db.Employs.Where(c => c.Mob == e.number).Select(c => c.ID).First();
    PersianDate pd = new PersianDate(dt); PDate = pd.Year.ToString() + "\\" + pd.Month.ToString() + "\\" + pd.Day.ToString();
    if (e.status == 1)
    {
    db.SaveMessage(ID, txtSMSText.Text, cmbTypeMsg.SelectedIndex.ToString(), true, dt, PDate);
    }
    else//consist of 2 and greater
    {
    db.SaveMessage(ID, txtSMSText.Text, cmbTypeMsg.SelectedIndex.ToString(), false, dt, PDate);
    }

  11. #11

    نقل قول: ارسال sms با استفاده از BackgroundWorker

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

  12. #12
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ارسال sms با استفاده از BackgroundWorker

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

  13. #13
    کاربر دائمی آواتار faravaghi
    تاریخ عضویت
    مهر 1388
    محل زندگی
    مشهد
    پست
    233

    نقل قول: ارسال sms با استفاده از BackgroundWorker

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

    هرکجا که ناخوانا بود بفرمایید تا توضیخات لازم رو بدم. البته قابل ذکره که من از دو طریق وب و GSM ارسال دارم، برای همینه که قبل هر چی اینو بررسی میکنم که بدونم کاربر قراراه با کدوم یکی بفرسته.

    دوتا تابع آخر هم برای اینه که شما در زمان اجرای BackgroungWorker اجازه نوشتن در Textbox, Button رو ندارید برای همین باید از اینا برای این کار استفاده کنید(از تغییر متن بگیرید تا تغییر عکس روی دکمه و....)

    protected internal BackgroundWorker BgSend;

    protected internal void SetBackgroundWorker()
    {
    try
    {
    // Get your configuration:
    // Check Configuration IF Send Device Is GSM Modem:
    // The configure is a Object that store My Programm Setting
    if (configure.DeviceSend == Config.SendDevice.GSM)
    {
    if (BgSend == null)
    {
    BgSend = new BackgroundWorker();
    this.BgSend.WorkerReportsProgress = true;
    this.BgSend.WorkerSupportsCancellation = true;
    this.BgSend.DoWork += new System.ComponentModel.DoWorkEventHandler(this.Send Progress);
    this.BgSend.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandl er(this.SendCompleted);
    this.BgSend.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler( this.ShowReportStatus);
    }
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }

    private void SendMassage(object sender, EventArgs e)
    {
    SetBackgroundWorker();

    if (BgSend.IsBusy)
    {
    MessageBox.Show(". لطفا تا اتمام ارسال پيام هاي قبلي صبر نماييد");
    return;
    }
    /***********
    *
    * Set Your Parameters
    *
    ***********/

    BgSend.RunWorkerAsync();
    }

    private void SendProgress(object sender, DoWorkEventArgs e)
    {
    try
    {
    configure.GetSetting();

    if (configure.DeviceSend == Config.SendDevice.GSM && SignalQuality() <= 0)
    {
    e.Cancel = true;
    WriteToBgWorker(BtnSendCancel, "عدم سرويس دهي");
    return;
    }

    /***********
    *
    * Here You Can Write Your Code For Send SMS With GSM Modem
    *
    ***********/


    /***********
    *
    * Check If Operation Cancel By User, Cancel BackgroundWorker
    *
    ***********/
    if (BgSend.CancellationPending)
    {
    e.Cancel = true;
    WriteToBgWorker(BtnSendCancel, "شروع مجدد ...");
    return;
    }

    /***********
    *
    * For Showing Progress
    *
    ***********/
    BgSend.ReportProgress((indexSend* 100) / (MobileCount) , "Working...");
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }

    private void SendCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    try
    {
    if (e.Cancelled)
    {
    /***********
    *
    * Write Your Code For Cancelling
    *
    ***********/
    }
    else if (e.Error != null)
    {
    /***********
    *
    * Write Your Code For Error
    *
    ***********/
    }
    else
    {
    /***********
    *
    * Write Your Code For Success
    *
    ***********/
    }
    }
    catch { }
    }

    private void ShowReportStatus(object sender, ProgressChangedEventArgs e)
    {
    try
    {
    Progressbar1.PerformStep();
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }

    private void WriteToBgWorker(TextBox Tbox, string text)
    {
    if (Tbox.InvokeRequired)
    {
    Tbox.Invoke(new MethodInvoker(delegate { Tbox.Text = text; }));
    }
    }

    private void WriteToBgWorker(Button Btn, string text)
    {
    if (Btn.InvokeRequired)
    {
    Btn.Invoke(new MethodInvoker(delegate { Btn.Text = text; }));
    }
    }

  14. #14
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    سلام آیا عاقلانست که ما بین هر ارسال پیامک توسط gsm ، وقفه چند ثانیه ای قرار داد آیا باید داخل backgroundworker از تابع sleep هم استفاده کرد؟ این کار به سرعت برنامه لطمه ای وارد نمی کنه و یا باعث توقفش نمیشه ؟ تشکر

  15. #15
    کاربر دائمی آواتار faravaghi
    تاریخ عضویت
    مهر 1388
    محل زندگی
    مشهد
    پست
    233

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    سلام دوست عزیز،
    اتفاقا به نظر من این کار لازمه و حداقل وقفه و معقولش همین 2 و یا 3 ثانیه است.
    این وقفه به GSM به اصطلاح یه فرصت نفس کشیدن میده برای اینکه پورت رو خالی نگه میداره که اگه تو اون لحظه یه رویداد بخواد انجام بشه اینکار اتفاق بیافته. مثلا بخواد تایید ارسال(Delivery) یک پیام بیاد و یا شایدم یه پیام جدید باشه.

    برای سوال دومی که فرمودین باید عرض کنم که حتما روی سرعت ارسال شما تاثیر گذار است!
    مثلا شما 100 تا پیام دارین که بین هر کدوم از اونا 3 ثانیه وقفه ایجاد کردین. یه حساب کتاب سر انگشتی اگه بکنید 300 ثانیه به زمان ارسال اضافه شده که میشه 5 دقیقه!
    پس زمان کمی نیست. ولی باید ببینید این زمان در کل ارزش دارد یا نه!
    اگه از من میشنوید این آیتم رو اختیاری کنید و مدت زمان اونم از کاربر بگیرید تا خودش بدونه و اتلاف وقتش!

    سایه عالی مستدام

  16. #16

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    سلام
    BackgroundWorker خودش بیانگر یک نخ جداگانه است. send_gsm_sms(); رو چرا در رویداد DowWork مستقیماً صدا نمی زنی؟
    می دونی که قبلش هم باید RunWorkerAsync() رو صدا بزنی.
    How to: Use a Background Worker

  17. #17
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    سلام تشکر آیا بهترین گزینه برای ایجاد وقفه تابع sleep ؟ و سوال بعد gsm در هر لحظه فقط و فقط توانایی انجام یک کار داره، یعنی اگه در زمان ارسال ، گزارش تسلیم (deliver) بیاد ، gsm از دلیور چشم پوشی میکنه و رویداد دریافت دلیور kylix روحشم خبردار نمیشه؟! لطف عالی پایدار

  18. #18
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    نقل قول نوشته شده توسط tooraj_azizi_1035 مشاهده تاپیک
    سلام
    BackgroundWorker خودش بیانگر یک نخ جداگانه است. send_gsm_sms(); رو چرا در رویداد DowWork مستقیماً صدا نمی زنی؟
    می دونی که قبلش هم باید RunWorkerAsync() رو صدا بزنی.
    How to: Use a Background Worker
    سلام من با کمک این لینک برنامم تغییر دادم. اما در زمان ارسال خطای -بسته بودن پورت- میده. در حالیکه بدون backgroundworker پیامک ها ارسال میشه. -- در ضمن من عمل کانکت شده در خارج از BGW انجام میدم. اینم کد ارسال. (تگ کد کار نمی کرد!) private void bw_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; if ((worker.CancellationPending == true)) { e.Cancel = true; } else { Invoke(new MethodInvoker(delegate { send_gsm_sms(); })); } }

  19. #19
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: ارسال sms با استفاده از BackgroundWorker

    سلام . من برای توقف ارسال(bgw) از این کد استفاده می کنم . اما تا زمان ارسال پیامک برای تمام شمارها توقفی رخ نمیده و در پایان اعلام میکنه done. دوستان میتونن راهنمایی کنن؟؟ تشکر bw.CancelAsync();

  20. #20

    نقل قول: ارسال sms با استفاده از BackgroundWorker

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

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

  1. نحوه ارسال SMS با استفاده از AT Command بر روي آندروئيد
    نوشته شده توسط kobari در بخش Android Studio
    پاسخ: 3
    آخرین پست: پنج شنبه 15 اردیبهشت 1390, 10:38 صبح
  2. ارسال sms با استفاده از وب سرویس
    نوشته شده توسط esm4150 در بخش WCF , Web Services , .Net Remoting
    پاسخ: 0
    آخرین پست: شنبه 23 بهمن 1389, 11:18 صبح
  3. سوال: نحوه استفاده از امکان از ارسال sms مخابرات
    نوشته شده توسط a.maleki در بخش Windows Phone و Windows Mobile
    پاسخ: 1
    آخرین پست: پنج شنبه 29 مرداد 1388, 15:28 عصر
  4. ارسال sms با استفاده از مودم و یا موبایل
    نوشته شده توسط best_ariya در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: جمعه 25 خرداد 1386, 15:05 عصر
  5. استفاده از web service برای ارسال sms در Vb
    نوشته شده توسط akram_raeespour در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: دوشنبه 07 اسفند 1385, 16:29 عصر

برچسب های این تاپیک

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

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