first time poster here!
I’m a Senior Computer Science Student and I’m currently developing a GUI that plays A board game (othello ) online using telnet.
the pseudo is something like this…
- click button
- update GUI
- recieve telnet input
- update GUI
rinse and repeat!
the problem is though, the only way i know how get the telnet function to go is by putting it inside the Click event handler, but the GUI won’t update until the whole function is finished. Meaning it updates every two moves instead of one. Is there a way to tell C# ( which I’m new to) to call a new function immediatly after one has finished? specifically on a GUI.
any input is appreciated
Thanks
I’m not sure I understood correctly the problem, but the “receive telnet input” line makes me worry a lot.
Are you writing this application in a single thread without using any kind of asynchronous TCP/IP communication?
If the answer is yes, the error is in the architecture you are using.
You need asynchronous tcp/ip communication, for example, with another thread running in parallel, with asynchronous sockets or with asynchronous streams.
You cannot stop the GUI waiting for the network, it would be a bad architecture.
Try to read this simple but complete article on codeproject: http://www.codeproject.com/KB/IP/socketsincs.aspx
Windows OS uses a thing called “message pump” to handle windows. Everything is a message that is processed by a single thread (your application thread).
Events are enqueued in the message queue.
If you stop the execution of the main thread for too long you are stopping the message queue from being processed, and this will stop user input and also painting, since rendering is also a windows message that can be enqueued.