U@007 Ответов: 3

Показывает картинку загрузки в Windows формах


всем привет,

я работаю с веб-сервисами.

когда я вызываю веб-сервис, чтение данных с веб-сервисов может занять более 5 минут. это время немного раздражало. Поэтому я хочу показать изображение. gif в тот раз, когда я это сделал, но оно не работает.

дайте мне знать, как я могу это сделать.

в моем коде (windows forms)
1) IAM принимает сетку
2) другая форма имеет управление progressbar
3) Когда я вызываю веб-сервис, появляется другая форма
4) Когда я завершаю вызов веб-сервиса, закрывается другая форма

это не работает для меня


в моем коде

когда я когда либо отлаживаю binddata вызывая иначе не вызывая я не знаю что происходит

так что дайте мне знать, где я ошибаюсь, есть ли другой способ сделать это

public partial class Form12 : Form
  {
      Test_Service Testsrvc = new Test_Service();
      Test[] test;

      private Thread th;
      //progressbar form
      private Form5 objFrm5 = new Form5();

      public Form12()
      {
          InitializeComponent();
          Load += new EventHandler(Form12_Load);
      }

      private void ShowDialog()
      {

          if (this.InvokeRequired)
          {
              objFrm5.ShowDialog();
          }
          else
          {
              //Start the thread that will execute this method
              th = new System.Threading.Thread(Binddata);
              th.IsBackground = true;
              th.Start();
          }

      }

      void Form12_Load(object sender, EventArgs e)
      {
          ShowDialog();
          if (th != null)
          {
              th.Abort();
              objFrm5.Close();
          }
      }

      private void Binddata()
      {

          Testsrvc.Credentials = new System.Net.NetworkCredential("UserName", "Pwd");
          test = Testsrvc.ReadMultiple(null, null, 0);
          dataGridView1.DataSource = Test;
          pictureBox1.Visible = false;
          progressBar1.Visible = false;
      }


  }

3 Ответов

Рейтинг:
2

midhun sankar

привет
В форме windows анимированный gif не будет работать. Он будет работать только в браузерах. Если вы хотите создать анимацию, сделайте ее с помощью wpf, и вы можете добавить ее в свою winform.


Рейтинг:
13

U@007

наконец я это сделал, узнав концепции делегатов.

 delegate void ProcessDelegate();

void Form12_Load(object sender, EventArgs e)
        {
            ProcessDelegate del = new ProcessDelegate(Binddata);
            del.BeginInvoke(new AsyncCallback(EndProcess), del);
            //it can handle the cross threading 
            Control.CheckForIllegalCrossThreadCalls = false;
        }

void EndProcess(IAsyncResult result)
        {
            if (result.IsCompleted) //if the async operation's result is true (done) then;
            {
                ProcessDelegate del = result.AsyncState as ProcessDelegate;
                del.EndInvoke(result);
            }
        }


теперь все работает нормально.