Solved

Pass data between 2 VB.NET applications on the same machine

Posted on 2013-12-03
16
746 Views
Last Modified: 2014-01-06
Hey,

I am looking for a solution that will allow me to pass simple string, or maybe a few basic values from one application to another that is running on the same machine.   There won't be a huge amount of data exchanged and it will be user initiated, so the frequency will be fairly low ( maybe once every few seconds).  And it will always be on the same machine.  I have looked around the web and found a couple different approaches such as windows messaging, remoting, or just reading/writing.   All of the articles were all pretty old though (pre 2009).  

Is there a solution that is better than others or simpler to implement.   And if so, can you point me in the direction of a good example.

To give a better picture of what I am trying to accomplish.   My end goal it to add functionality into application "A", so when the user clicks a phone number it will send that number to another application that will initiate a call.  So I would pass the persons name and phone number from Application A to application B.


Thanks in advance...
0
Comment
Question by:MRS
  • 6
  • 4
  • 3
  • +2
16 Comments
 
LVL 4

Expert Comment

by:bcolladay
Comment Utility
Does program B have to be running or can program B start an instance?

If it can be started on demand, you could use command line arguments.
0
 

Author Comment

by:MRS
Comment Utility
Program B  would already be up and running.  And it would need to continually receive new information to process as it while it runs.
0
 
LVL 4

Expert Comment

by:bcolladay
Comment Utility
Assuming they are networked, udp might work as well, I've never done it, but see if this looks like a solution:

http://www.codeproject.com/Articles/8877/UDP-Send-and-Receive-using-threads-in-VB-NET
0
 

Author Comment

by:MRS
Comment Utility
That seems like more then I need as all my interaction will take place on a single machine.
0
 
LVL 4

Expert Comment

by:bcolladay
Comment Utility
Then how about having program A write a file with the data to pass, in a shared location. Tell Program B to read the file(s) every x seconds, consume the data from the file, then delete it.
0
 

Author Comment

by:MRS
Comment Utility
that was one of the solutions that I had seen on the web, just didn't seem very elegant of a solutions compared to some of the newer technologies.  But old doesn't necessarily mean bad.  I will give that a shot and see how it performs.
0
 
LVL 84
Comment Utility
Or use a database, like SQLite or SQLSvrCE, and write data from ProgramA, and read it from ProgramB.

Of the Registry.
0
 
LVL 69

Expert Comment

by:Éric Moreau
Comment Utility
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 12

Accepted Solution

by:
ktaczala earned 500 total points
Comment Utility
You can use filewatcher to check for a file showing up in a folder, then act upon it.  I would run that as a backgroundworker task.  Filewatcher Rocks!! Nothing would happen in the second app until a file shows up in the specified folder, I would check for a particular filename so there's no chance of a file being put there accidentally and being in the wrong format.  By putting the filewatcher in a backgroundworker thread the app will not lose responsiveness.
0
 

Author Comment

by:MRS
Comment Utility
ktaczala,

That is exactly how I implemented it and seems to work OK as expected.  I am a little concerned that this approach will handle the volume and run into an IO bottleneck.  You mentioned running the FSW in a different thread.  It seems like it is in it's own thread by default as I have to use delegates to update the form.  Was there something special you had in mind?

Lastly,  Has anyone used WCF for something like this in the past?  That seems to be the "recommended approach" from what I have read online, but most of the examples deal in hosted services or web services.  This would be more of a client/server type of scenario.

Thanks again for all the input from everyone
0
 
LVL 12

Expert Comment

by:ktaczala
Comment Utility
You're right about filesystemwatcher, it was late when I posted that.  it does run on it's own thread.

Here's Some info on what issues people have come across with FSW;
http://stackoverflow.com/questions/239988/filesystemwatcher-vs-polling-to-watch-for-file-changes

do a search for "filesystemwatcher or WCF" you'll get lots of good info.
0
 
LVL 69

Expert Comment

by:Éric Moreau
Comment Utility
there is too much overhead for FSW when it is for short messages on the same machine. you should really consider the MemoryMappedFiles
0
 

Author Comment

by:MRS
Comment Utility
emoreau,

Is there an way to trigger an event when the shared memorymappfile is updated.  Much like the way a FSW triggers an event, or would I have to write something that would keep looking for changes based on a timer or something?
0
 
LVL 69

Expert Comment

by:Éric Moreau
Comment Utility
I don't think you can because the connection as to be initiated. Maybe in your case you could use a timer
0
 

Author Comment

by:MRS
Comment Utility
Any thoughts on using WCF? Seems like it has all the core components required to achieve this task....
0
 
LVL 69

Expert Comment

by:Éric Moreau
Comment Utility
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Problem to Popup 2 48
.NET Error 7 42
Please explain: Aspect Oriented Programming 2 51
VB.Net - CSV to Oracle table 4 27
Recently while returning home from work my wife (another .NET developer) was murmuring something. On further poking she said that she has been assigned a task where she has to serialize and deserialize objects and she is afraid of serialization. Wha…
Creating an analog clock UserControl seems fairly straight forward.  It is, after all, essentially just a circle with several lines in it!  Two common approaches for rendering an analog clock typically involve either manually calculating points with…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now