2 way events
-
Is there such a thing as 2 way events? OR maybe I am doing this wrong. My form is making a call to a dll to submit a form and logon to a web site if required. The dll all of a sudden needs more information that wasn't thought it would need prior so it wants to ask the user for more information and then continue when it has it. I have searched around for 2 way events with no luck. I started to make an event that calls back to the form and then the form calls back with the new information to a continuation event but then I started to realize that there are issues with this such as another function called the logon function and the form doesn't know about that. Obviously I could track that as well. In any event I would like to know if I am doing it the wrong way.
-
Is there such a thing as 2 way events? OR maybe I am doing this wrong. My form is making a call to a dll to submit a form and logon to a web site if required. The dll all of a sudden needs more information that wasn't thought it would need prior so it wants to ask the user for more information and then continue when it has it. I have searched around for 2 way events with no luck. I started to make an event that calls back to the form and then the form calls back with the new information to a continuation event but then I started to realize that there are issues with this such as another function called the logon function and the form doesn't know about that. Obviously I could track that as well. In any event I would like to know if I am doing it the wrong way.
Events are always "2 way", meaning they are raised and returned. Maybe you are getting terms mixed up, you don't call functions by using events (or if you are, its not the right design). You should have a way of validating your user input before pushing up the call stack to the DLL to make sure you get everything you need. Can you give a specific scenario? Here's how it reads to me: Your application asks me for some information, like username/password. I give it. You pass it to the DLL to submit some information to a web-site and this DLL needs additional information to complete the call, like saying "not registered, please create an account". You need the additional account information so you ask the user for it and call again. In that case, I would expect that the DLL function returns something that says it needs more data. You simply ask the user for it, and re-submit to the same function. If you are subscribing to an event in the DLL that says "succeeded" "failed", or "additional info" then it really is a violation of programming principles since how are you supposed to match up a function call with a request if you have multiple happening at the same time? I guess I would need more information to be able to suggest a good course of action here, is the DLL yours or third party?
-
Events are always "2 way", meaning they are raised and returned. Maybe you are getting terms mixed up, you don't call functions by using events (or if you are, its not the right design). You should have a way of validating your user input before pushing up the call stack to the DLL to make sure you get everything you need. Can you give a specific scenario? Here's how it reads to me: Your application asks me for some information, like username/password. I give it. You pass it to the DLL to submit some information to a web-site and this DLL needs additional information to complete the call, like saying "not registered, please create an account". You need the additional account information so you ask the user for it and call again. In that case, I would expect that the DLL function returns something that says it needs more data. You simply ask the user for it, and re-submit to the same function. If you are subscribing to an event in the DLL that says "succeeded" "failed", or "additional info" then it really is a violation of programming principles since how are you supposed to match up a function call with a request if you have multiple happening at the same time? I guess I would need more information to be able to suggest a good course of action here, is the DLL yours or third party?
Well in this case it's a captcha. So I don't know if it will even be required for 1 and 2 I need the user to solve it.
-
Is there such a thing as 2 way events? OR maybe I am doing this wrong. My form is making a call to a dll to submit a form and logon to a web site if required. The dll all of a sudden needs more information that wasn't thought it would need prior so it wants to ask the user for more information and then continue when it has it. I have searched around for 2 way events with no luck. I started to make an event that calls back to the form and then the form calls back with the new information to a continuation event but then I started to realize that there are issues with this such as another function called the logon function and the form doesn't know about that. Obviously I could track that as well. In any event I would like to know if I am doing it the wrong way.
No idea what you mean with 2-way events. Events in C# are special delegate functions that 'belong' to the class that declares it and nowhere else. The dll you mention, do you have any documentation on how to use it? Sounds to me like you should start. If an API doesn't do what you expect it to do, it's the first thing you should sort out before trying anything else. Also, are you using webforms or something else? You will get better answers if you're more specific on what you're trying to accomplish.
.
-
Is there such a thing as 2 way events? OR maybe I am doing this wrong. My form is making a call to a dll to submit a form and logon to a web site if required. The dll all of a sudden needs more information that wasn't thought it would need prior so it wants to ask the user for more information and then continue when it has it. I have searched around for 2 way events with no luck. I started to make an event that calls back to the form and then the form calls back with the new information to a continuation event but then I started to realize that there are issues with this such as another function called the logon function and the form doesn't know about that. Obviously I could track that as well. In any event I would like to know if I am doing it the wrong way.
Events are alwyas "2 way", though they are never described as such. There is always an event provider and one or more subscribers to that event. The event usually passes the source of the event (usually as Object) and some kind of EventArgs object. What you may not realize is that you can modify the Eventargs object passed to your event handler. When the event handler code goes out of scope, the event provider gets control back and can look at the data that is in the EventArgs object it sent to the handler. For an example of this, see Form_Closing and it's FormClosingEventArgs class. In there, you'll find a Cancel property that the handler code can set to cancel the form being closed. Another example is KeyPressEventArgs and its Handled property.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak -
Events are alwyas "2 way", though they are never described as such. There is always an event provider and one or more subscribers to that event. The event usually passes the source of the event (usually as Object) and some kind of EventArgs object. What you may not realize is that you can modify the Eventargs object passed to your event handler. When the event handler code goes out of scope, the event provider gets control back and can look at the data that is in the EventArgs object it sent to the handler. For an example of this, see Form_Closing and it's FormClosingEventArgs class. In there, you'll find a Cancel property that the handler code can set to cancel the form being closed. Another example is KeyPressEventArgs and its Handled property.
A guide to posting questions on CodeProject[^]
Dave KreskowiakJust what I was looking for. thx