sajadsobh
پنج شنبه 22 بهمن 1394, 10:20 صبح
سلام دوستان و اساتید محترم. خسته نباشید.
من یه برنامه تحت ویندوز نوشتم که باید یه سری اطلاعات رو از لوکال به سمت هاست بفرستم که این ارسال اطلاعات رو توی تابع Send نوشتم حالا توی همین ثبت دیتا نیاز دارم که یه عکس هم آپلود کنم و آدرسش رو برگردونم و این کار رو توی تابع UploadImage انجام دادم که این تابع توی تابع Send فراخونی میشه. حالا واسه اینکه کاربر فکر نکنه برنامه هنگ کرده اومدم یه عکس Gif و یه متن با تکست "در حال ارسال اطلاعات" قرار دادم که وقتی شروع به ارسال و آپلود شد اون Gif نمایش داده بشه.
138977
و اینکار رو هم با یه backgroundworker انجام دادم به این شکل:
private void btn_save_Click(object sender, EventArgs e)
{
lbl_waiting.Visible = true;
pic_waiting.Visible = true;
foreach (Control x in this.Controls)
{
if (!(x is PictureBox))
x.Enabled = false;
}
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Send();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error == null)
{
if (flag)
{
lbl_waiting.Visible = false;
pic_waiting.Visible = false;
MessageBox.Show(this, "عملیات ثبت با موفقیت انجام شد.", "تکمیل عملیات!", MessageBoxButtons.OK,
MessageBoxIcon.None, MessageBoxDefaultButton.Button1,
MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);
frm_addedit_Load(null, null);
}
}
}
public void Send()
{
UploadImage();
//Do Somthing for Save Data
}
حالا مشکل اینجاست وقتی که برنامه میره توی تابع UploadImage و داره عکس ارسال میکنه مثه اینکه هنگ میکنه و عکس Gif من ثابت می مونه. ولی بعد از انجام آپلود دوباره برمیگرده به حالت عادی. فکر میکنم مشکل از اینه که تابع تو در تو استفاده کردم باشه. چون اومدم به جای دستورات توی Send و همچنین UploadImage از Sleep استفاده کردم. بازم ایست میکنه. یعنی ربطی به دستوراتی که توی Send و Upload نوشتم نیست. چه راه حلی واسش هست؟! :افسرده:
من یه برنامه تحت ویندوز نوشتم که باید یه سری اطلاعات رو از لوکال به سمت هاست بفرستم که این ارسال اطلاعات رو توی تابع Send نوشتم حالا توی همین ثبت دیتا نیاز دارم که یه عکس هم آپلود کنم و آدرسش رو برگردونم و این کار رو توی تابع UploadImage انجام دادم که این تابع توی تابع Send فراخونی میشه. حالا واسه اینکه کاربر فکر نکنه برنامه هنگ کرده اومدم یه عکس Gif و یه متن با تکست "در حال ارسال اطلاعات" قرار دادم که وقتی شروع به ارسال و آپلود شد اون Gif نمایش داده بشه.
138977
و اینکار رو هم با یه backgroundworker انجام دادم به این شکل:
private void btn_save_Click(object sender, EventArgs e)
{
lbl_waiting.Visible = true;
pic_waiting.Visible = true;
foreach (Control x in this.Controls)
{
if (!(x is PictureBox))
x.Enabled = false;
}
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Send();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error == null)
{
if (flag)
{
lbl_waiting.Visible = false;
pic_waiting.Visible = false;
MessageBox.Show(this, "عملیات ثبت با موفقیت انجام شد.", "تکمیل عملیات!", MessageBoxButtons.OK,
MessageBoxIcon.None, MessageBoxDefaultButton.Button1,
MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);
frm_addedit_Load(null, null);
}
}
}
public void Send()
{
UploadImage();
//Do Somthing for Save Data
}
حالا مشکل اینجاست وقتی که برنامه میره توی تابع UploadImage و داره عکس ارسال میکنه مثه اینکه هنگ میکنه و عکس Gif من ثابت می مونه. ولی بعد از انجام آپلود دوباره برمیگرده به حالت عادی. فکر میکنم مشکل از اینه که تابع تو در تو استفاده کردم باشه. چون اومدم به جای دستورات توی Send و همچنین UploadImage از Sleep استفاده کردم. بازم ایست میکنه. یعنی ربطی به دستوراتی که توی Send و Upload نوشتم نیست. چه راه حلی واسش هست؟! :افسرده: