Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. 2 way events

2 way events

Scheduled Pinned Locked Moved C#
question
6 Posts 4 Posters 2 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    bfis108137
    wrote on last edited by
    #1

    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.

    R 0 D 3 Replies Last reply
    0
    • B bfis108137

      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.

      R Offline
      R Offline
      Ron Beyer
      wrote on last edited by
      #2

      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?

      B 1 Reply Last reply
      0
      • R Ron Beyer

        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?

        B Offline
        B Offline
        bfis108137
        wrote on last edited by
        #3

        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.

        1 Reply Last reply
        0
        • B bfis108137

          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.

          0 Offline
          0 Offline
          0bx
          wrote on last edited by
          #4

          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.

          .

          1 Reply Last reply
          0
          • B bfis108137

            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.

            D Offline
            D Offline
            Dave Kreskowiak
            wrote on last edited by
            #5

            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

            B 1 Reply Last reply
            0
            • D 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 Kreskowiak

              B Offline
              B Offline
              bfis108137
              wrote on last edited by
              #6

              Just what I was looking for. thx

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Categories
              • Recent
              • Tags
              • Popular
              • World
              • Users
              • Groups