c# - How to pass an argument to the EventHandler -
no it's not kind of basic question. doing application , got scenerio like, file downloaded uploaded ftp server, local copy deleted, 1 entry placed in dictionary filename. so, code below
public void download_this_webpage(string url, string cookies_string, string local_saving_file_name_with_path) { webclient wb = new webclient(); wb.headers.add(httprequestheader.cookie, cookies_string); // below want pass local_file _path event handler wb.downloadfilecompleted += new system.componentmodel.asynccompletedeventhandler(wb,); wb.downloadfileasync(new uri(url), local_saving_file_name_with_path + ".html"); } public void data_download_completed(object sender, system.componentmodel.asynccompletedeventargs args) { //use file name upload file ftp } public ftp_completed { // delete file }
but, dont know how pass filename event handler of download_completed. can guide me in this
edit: thank answers "darin" , "frederic". there general way pass custom data (already defined)event handler below
void main_fn() { string my_data = "data"; some_object = new some_object(); some_object.click_event += new eventhandler(click_happened); (assume event passes 2 ints, want pass string "my_data" "click_happened") some_object.start(); } void click_happened(int a, int b) { // want string "my_data" here. }
in short how trick signature?
you can pass file name in usertoken
argument downloadfileasync(). when operation finishes, available in userstate
property of asynccompletedeventargs argument passed data_download_completed()
:
string filename = local_saving_file_name_with_path + ".html"; wb.downloadfileasync(new uri(url), filename, filename);
then:
public void data_download_completed(object sender, system.componentmodel.asynccompletedeventargs args) { string filename = (string) args.userstate; // 'filename'... }
Comments
Post a Comment