.net - Custom event Issue -


i created class run new process (a cli external application), application has own progressbar, pick progress hidden process console calculate percentage outside console, in class.

well, want make event (or else, event first think usefull) in class return integer number contains progress percentage (the percentage integer 0 99)

i've read how create custom events i'm lost trying it, don't know how retrieve integer (the variable percentage) outside class handle other class, example run method class want handle process percentage progress in default "form1" class.

this code custom class:

public class coreconverter  public shared effects string = string.empty ' dsp effects  ' <summary> ' gets or sets coreconverter executable path. ' </summary> public shared coreconverter_location string = ".\coreconverter.exe" public shared coreconverter new process()  public shared coreconverter_info new processstartinfo() { _               .createnowindow = true, _               .useshellexecute = false, _               .redirectstandardoutput = true, _               .redirectstandarderror = true _ }  public shared event progress eventhandler  protected sub onprogress()     raiseevent progress(me, eventargs.empty) end sub  public shared sub run_coreconverter()      coreconverter_info.filename = coreconverter_location     coreconverter_info.standarderrorencoding = system.text.encoding.unicode     coreconverter_info.standardoutputencoding = system.text.encoding.unicode     coreconverter.startinfo = coreconverter_info     coreconverter.start()      dim percentage integer = 0      while not coreconverter.hasexited          if chrw(coreconverter.standardoutput.read) = "*"             percentage += 1             raiseevent progress(nothing, eventargs.empty)         end if      end while     ' msgbox("end")  end sub  end class 

this code form1 class

public sub form1_load(sender object, e eventargs) handles mybase.shown     addhandler coreconverter.progress, addressof process_progress     coreconverter.run_coreconverter(arguments, blah blah blah) end sub  protected sub process_progress(sender object, e eventargs)     ' msgbox(e.tostring) ' want obtain integer percentage don't know how end sub 

notice need use addhandler handle progress event, want to handle else way can't , don't know why:

public sub form1_load(sender object, e eventargs) handles mybase.shown     coreconverter.run_coreconverter(arguments, blah blah blah) end sub  protected sub process_progress(sender object, e eventargs) _ handles coreconverter.progress     ' msgbox(e.tostring) ' want obtain integer percentage don't know how end sub 

so can solve both problems?

update:

trying solve using @varocarbas solution...

coreconverter class:

public shared withevents p_progressbar progressbar  public shared sub run_coreconverter()      p_progressbar = new progressbar() {.maximum = 60}      coreconverter_info.filename = coreconverter_location     coreconverter.startinfo = coreconverter_info     coreconverter.start()      while not coreconverter.hasexited          if chrw(coreconverter.standardoutput.read) = "*"             p_progressbar.performstep()         end if      end while      p_progressbar.dispose()     coreconverter.close  end sub 

form1 class:

public sub form1_shown(sender object, e eventargs) handles mybase.shown      ' exception: p_progressbar not event (of course, know)     addhandler coreconverter.p_progressbar, addressof process_progress      coreconverter.run_coreconverter(arguments, blah blah blah)  end sub  sub process_progress(sender object, e eventargs) ' handles coreconverter.p_progressbar obviouslly can't this... :(     msgbox(sender.value) end sub 

finally resolved following steps of marked answer here: handle events in class


Comments

Popular posts from this blog

c++ - CryptStringToBinary API behavior -

c++ - Correct method for redrawing a layered window -

java.util.scanner - How to read and add only numbers to array from a text file -