2017-03-14 1 views
1

Ich entwickle einen selbst gehosteten C# basierten WCF-Dienst für meine Abschlussprüfung, ich habe die Programmierung von Server und Client abgeschlossen (beide in der Konsole, dann werde ich den Client aktualisieren) UWP), der Server gestartet wird, verbindet Kunden es aber Variablen in der Dienstbibliothek wird jedes Mal, wenn ein Client eine FunktionWCF-Dienst, der Informationen während der Ausführung behalten muss

public static int connettiti() 
    { 
     Random rand = new Random(); 
     int ID = rand.Next(1, 999999); 
     giocatori.Add(ID); 
     contagiocatori++; 
     if (giocatori.Count == 0) 
     { 
      codicevincitore = ID; 
     } 
     else if (giocatori.Count > 2) 
     { 
      return 1000000; 
     } 
     return ID; 
    } 
    public static bool avviare() 
    { 
     bool avvia = false; 
     int count = giocatori.Count; 
     if (count == 2) 
     { 
      avvia = true; 
     } 
     return avvia; 
    } 

Liste giocatori nur ein Mitglied, hat immer Anrufe zurückgesetzt, so Spiel nicht gestartet werden, auch wenn Ich verbinde 5 Clients, sie erhalten ihre IDs, aber der Server sieht sie getrennt

Connetiti funktioniert gut, es gibt die ID, aber avvare wird nicht ge t diese Bedingung wahr

also, wie kann ich Variablen in der WCF-Service-Bibliothek behalten ihre Werte für die gesamte Ausführung des Servers?

Antwort

0

Standardmäßig wird jeder Anruf für eine neue Instanz des Dienstes ausgeführt. Wechseln Sie auf Ihrer Hostseite zu dem Service, der Ihren Servicevertrag implementiert, und verwenden Sie das Serviceverhaltensattribut, um den InstanceContextMode festzulegen.

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 

https://msdn.microsoft.com/en-us/library/ms731193(v=vs.110).aspx

+0

Danke sehr! –

Verwandte Themen