Allen
Ik ben aan een projectje bezig om een beetje terug in het programmeren te komen. Op hoog niveau heb ik, zoals wel zal te merken zijn, nog geen ervaring.
Nu loop ik ergens tegenaan waar ik geen blijf mee weet.
Heb al half StackOverflow afgezocht, tutorials gezocht, MSDN afgegaan kom ik er nog steeds niet uit.
Ik heb mijn klasse in mijn applicatie, deze zit achter mijn WinForm.
In deze klasse neem ik de waarden uit textboxes in mijn WinForm en gebruik deze om te verbinden naar een server. De logica om te verbinden zal door nog een 2de project in dezelfde solution gebruikt worden, daarom zet ik ze in een Class Library en het leek me handig ook meteen te leren werken met Class Libraries.
Deze Class library lijkt zijn werk goed te doen - tenzij er een exception optreed bij het verbinden (timeout of....).
Ik krijg deze exception NIET opgevangen in de WinForm klasse om de foutmelding dan aan de gebruiker te serveren.
Volgens wat ik vond zouden exceptions gewoon moeten doorstromen naar de caller... maar mijn app blijft crashen.
Voor de volledige code kan je terecht op GitHub.
https://github.com/ProfessorZ/DiamondDogs/
Op dit moment forceer ik een MessageBox vanuit de DLL maar dit lijkt me niet de bedoeling - de DLL wordt er zo enorm platformafhankelijk van en dat probeer ik te vermijden.
Ik ben aan een projectje bezig om een beetje terug in het programmeren te komen. Op hoog niveau heb ik, zoals wel zal te merken zijn, nog geen ervaring.
Nu loop ik ergens tegenaan waar ik geen blijf mee weet.
Heb al half StackOverflow afgezocht, tutorials gezocht, MSDN afgegaan kom ik er nog steeds niet uit.
Ik heb mijn klasse in mijn applicatie, deze zit achter mijn WinForm.
In deze klasse neem ik de waarden uit textboxes in mijn WinForm en gebruik deze om te verbinden naar een server. De logica om te verbinden zal door nog een 2de project in dezelfde solution gebruikt worden, daarom zet ik ze in een Class Library en het leek me handig ook meteen te leren werken met Class Libraries.
Deze Class library lijkt zijn werk goed te doen - tenzij er een exception optreed bij het verbinden (timeout of....).
Ik krijg deze exception NIET opgevangen in de WinForm klasse om de foutmelding dan aan de gebruiker te serveren.
C#: ClientConnect.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public class ClientConnect { public void ConnectToServer(IPEndPoint ip, string type, string name) { clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ipEndPoint = ip; strName = name; strTypeOfCLient = type; clientSock.BeginConnect(ip, new AsyncCallback(LoginToServer), clientSock); } public void LoginToServer(IAsyncResult AR) { clientSock.EndConnect(AR); // This statement is where it goes wrong. // .. hier hoort meer te komen } } |
C#: CarbonCatsMain.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| public class CarbonCats_Main { private static ClientConnection clientcon; private void btnConnect_Click(object sender, EventArgs e) { //placeholder for making the connection to "Mother Base" int port = Int32.Parse(txtPort.Text); System.Net.IPAddress ipA = System.Net.IPAddress.Parse(txtServer.Text); System.Net.IPEndPoint ipE = new System.Net.IPEndPoint(ipA,port); try { clientcon.ConnectToServer(ipE, "Cat", txtName.Text); } catch (Exception ex) { MessageBox.Show("An error occurred! are you sure the server is online? \n" + "Here is more information: \n" + ex.Message, "Carbon Cats", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); } } } |
Volgens wat ik vond zouden exceptions gewoon moeten doorstromen naar de caller... maar mijn app blijft crashen.
Voor de volledige code kan je terecht op GitHub.
https://github.com/ProfessorZ/DiamondDogs/
Op dit moment forceer ik een MessageBox vanuit de DLL maar dit lijkt me niet de bedoeling - de DLL wordt er zo enorm platformafhankelijk van en dat probeer ik te vermijden.
[ Voor 4% gewijzigd door Tokkes op 01-09-2016 23:36 ]
GoTBF3 Race topic! -- Battlelog - Battalion'44 Servers :10Slots Wartide 213.32.98.194:7777 - TDM = 213.32.98.194:7781