i'm novice programmer , having trouble understanding why isn't working. have "connectedclientlist" class:
public class connectedclientlist { static readonly object _lock = new object(); public static ilist<clientpeer> connectedclientpeers; static connectedclientlist() { connectedclientpeers = new list<clientpeer>(); } public static ilist<clientpeer> getclientpeers() { lock (_lock) { return connectedclientpeers; } } public static void addclientpeertoconnectedlist(clientpeer client) { lock (_lock) { connectedclientpeers.add(client); } } public void removeclientpeerfromconnectedlist(clientpeer client) { connectedclientpeers.remove(client); } }
i have in class:
clientpeer clientpeer = new clientpeer(request, logger, _clienthandlerregistry); connectedclientlist.addclientpeertoconnectedlist(clientpeer); logger.infoformat("added clientpeer list. count now: {0}", connectedclientlist.connectedclientpeers.count);
and have this:
public characterupdateeventhandler(ilogger logger) { logger = logger; ifiber testfiber = new threadfiber(); testfiber.start(); testfiber.scheduleoninterval(sendupdateeventtoclients, 1000, 5000); } public void sendupdateeventtoclients() { if(connectedclientlist.getclientpeers() != null) logger.infoformat("# of connected client peers: {0}", connectedclientlist.getclientpeers().count); else { logger.infoformat("connectedclientpeers null"); } }
i trying build server using exitgame's photon server. when first create clientpeer , add "connectedclientpeers" have debug info saying "connectedclientpeers" list in fact have count of 1.
the thread i'm running seems repeating "sendupdateeventtoclients" fine, debug message in function says "connectedclientpeers" list has count of 0.
i'm sure it's simple i'm not aware of, haven't had luck finding solution passed couple of days. or advice appreciated. thanks!
-jarryd
--edit--
i updated class make entire class static, still have same problem.
public static class connectedclientlist { static readonly object _lock = new object(); public static readonly ilist<clientpeer> connectedclientpeers; static connectedclientlist() { connectedclientpeers = new list<clientpeer>(); } public static ilist<clientpeer> getclientpeers() { lock (_lock) { return connectedclientpeers; } } public static void addclientpeertoconnectedlist(clientpeer client) { lock (_lock) { connectedclientpeers.add(client); } } public static void removeclientpeerfromconnectedlist(clientpeer client) { connectedclientpeers.remove(client); } }
my debug log: 2016-08-08 14:27:21,771 [threadfiber-1] info [ characterupdateeventhandler][ 55] [(null)] - # of connected client peers: 0
2016-08-08 14:27:23,428 [threadfiber-2] info [ characterupdateeventhandler][ 55] [(null)] - # of connected client peers: 0
2016-08-08 14:27:26,771 [threadfiber-1] info [ characterupdateeventhandler][ 55] [(null)] - # of connected client peers: 0
2016-08-08 14:27:28,443 [threadfiber-2] info [ characterupdateeventhandler][ 55] [(null)] - # of connected client peers: 0
2016-08-08 14:27:31,774 [threadfiber-1] info [ characterupdateeventhandler][ 55] [(null)] - # of connected client peers: 0
2016-08-08 14:27:33,453 [threadfiber-2] info [ characterupdateeventhandler][ 55] [(null)] - # of connected client peers: 0
2016-08-08 14:27:36,787 [threadfiber-1] info [ characterupdateeventhandler][ 55] [(null)] - # of connected client peers: 0
2016-08-08 14:27:38,465 [threadfiber-2] info [ characterupdateeventhandler][ 55] [(null)] - # of connected client peers: 0
not sure how post code in comment, of code seems fine
using system; using system.collections.generic; using system.linq; using system.text; using system.threading.tasks; namespace consoleapplication6 { class program { static void main(string[] args) { clientpeer clientpeer = new clientpeer(); clientpeer.myproperty = 5; connectedclientlist.addclientpeertoconnectedlist(clientpeer); console.writeline(connectedclientlist.connectedclientpeers.count.tostring()); connectedclientlist.addclientpeertoconnectedlist(clientpeer); console.writeline(connectedclientlist.connectedclientpeers.count.tostring()); clientpeer = new clientpeer(); connectedclientlist.addclientpeertoconnectedlist(clientpeer); console.writeline(connectedclientlist.connectedclientpeers.count.tostring()); } public class clientpeer { public int myproperty { get; set; } } public static class connectedclientlist { static readonly object _lock = new object(); public static ilist<clientpeer> connectedclientpeers; static connectedclientlist() { connectedclientpeers = new list<clientpeer>(); } public static ilist<clientpeer> getclientpeers() { lock (_lock) { return connectedclientpeers; } } public static void addclientpeertoconnectedlist(clientpeer client) { lock (_lock) { connectedclientpeers.add(client); } } } } }
so adds 3 peers , displays count , shows there indeed 3
Comments
Post a Comment