c# - How identify that form is consuming a Data Service -


i have c# winforms application using of wcf data services , can't find way know if application doing process web service. have tried implement iclientmessageinspector, etc. seems doesn't work.

is there other way catch when windows form app consuming web service? purpose display "running process" icon when communication service opened , hide when it's close.

thanks.

you should add event in place calling wcfservice methods , listen event in ui layer. custom event argument in event, should provide more info consuming ui layer enum values connected, transferstarted, transferended, closed,...

i think there 2 main possible cases: wcf communication take place synchronous - calling wrapper methods of object handles connection/requests/responses wcf service - in case think trivial, make ui actions before every call of wrapper example

try {  wcfex.iwcfs5extensionclient client = new iwcfs5extensionclient("myendpointconfigurationname");  client.open();  if (client.state == communicationstate.opened)  {      //change ui connected  }  else  {      //change ui connection error  }  application.doevents();  //change ui transfering data  application.doevents();  client.dowork();  //change ui transfer done  application.doevents();  client.close();  //change ui closed } catch (exception e) {    //change ui comunication error } 

second if wcf communication async -i add more sofisticated sample later today edit: example async work , notifying form

using system; using system.componentmodel; using system.threading;  using wcfex;  public class myform : form {     public myform()     {         wcfhandler wcfconnection = new wcfhandler();         wcfconnection.progresschanged += wcfconnectiononprogresschanged;     }      private delegate void wcfconnectiononprogresschangeddelegate(object sender, wcfhandler.progresschangedeventargs eventargs);      private void wcfconnectiononprogresschanged(object sender, wcfhandler.progresschangedeventargs eventargs)     {         //multi thread synchronization check         if (this.invokerequired)         {             object[] parameters = new object[2];             parameters[0] = sender;             parameters[1] = eventargs;             this.invoke(new wcfconnectiononprogresschangeddelegate(wcfconnectiononprogresschanged), parameters);         }         else         {             if (eventargs == null)                 return;              switch (eventargs.statevalue)             {                 case wcfhandler.progresschangedeventargs.state.started:                     {                         this.text = "starting connection...";                         break;                     }                 case wcfhandler.progresschangedeventargs.state.processing:                     {                         this.text = "downloading updates...";                         break;                     }                 case wcfhandler.progresschangedeventargs.state.finished:                     {                         this.text = eventargs.succes ? "update completed" : "update failed";                         break;                     }             }              application.doevents();         }     }       public class wcfhandler     {         public class progresschangedeventargs : eventargs         {             public enum state : int             {                 started,                 processing,                 finished             };              public bool succes { get; set; }             public state statevalue { get; set; }         }          public delegate void progresschangedeventhandler(object sender, progresschangedeventargs eventargs);          public event progresschangedeventhandler progresschanged;          protected virtual void onprogresschanged(progresschangedeventargs e)         {             if (progresschanged != null)             {                 progresschanged(this, e);             }         }          public void startchecking()         {             backgroundworker bworker = new backgroundworker();              bworker.dowork += checkstatesasync;             bworker.runworkercompleted += bworkeronrunworkercompleted;              bworker.runworkerasync();         }          private void checkstatesasync(object sender, doworkeventargs e)         {             while (true)             {                 wcfex.iwcfs5extensionclient client = new iwcfs5extensionclient("mywcfbindingconfig");                 progresschangedeventargs controller = new progresschangedeventargs();                 controller.statevalue = progresschangedeventargs.state.started;                 controller.succes = true;                  this.onprogresschanged(controller);                  try                 {                     client.open();                      controller.statevalue = progresschangedeventargs.state.processing;                     controller.succes = true;                     this.onprogresschanged(controller);                      //do work                 }                 catch (exception)                 {                     this.onprogresschanged(new progresschangedeventargs()                                                {                                                    statevalue = progresschangedeventargs.state.finished,                                                    succes = false                                                });                 }                  thread.sleep(8000);             }         }          private void bworkeronrunworkercompleted(object sender, runworkercompletedeventargs runworkercompletedeventargs)         {             progresschangedeventargs controller = new progresschangedeventargs();             controller.statevalue = progresschangedeventargs.state.finished;             controller.succes = true;             this.onprogresschanged(controller);         }     } 

Comments

Popular posts from this blog

html - How to style widget with post count different than without post count -

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

javascript - storing input from prompt in array and displaying the array -