A program in another language can call a
Java program by several protocols. Your Java program would probably be a "server" which just means a program that starts up, opens some kind of API and waits for connections from clients. Your C# program would be the client, a program that connecxts, sends a request, gets a repsonse, and (optionally) disconnects.
If everything is on the same computer and you have some C/C++ skills, JNI is a choice. Otherwise you can look at raw sockets, HTTP, RMI, etc. It is possible to make clients for these protocols in many languages.
The other half of your problem sounds like internal program design. You receive a call with a machine id on it. If you already have a tab for that id update it. If you don't already have a tab for that machine id, create one.
Did that help? Maybe raise some new questions?