私はWCFサービスを使用して地雷探偵ゲームを作ろうとしています。私はクライアントからサービスに接続し、メソッドを遠隔から呼び出し、返すものを得ることができるようです。複数のクライアントが自分のWCFサービスに干渉しなければならないときの問題
問題は、サービス側では、私は配列を使用しています。クライアントがサービスに接続するたびに、配列は自動的に更新されるはずですが、クライアントが接続するたびに配列が0にリセットされます。
ここにあなたが見たいかもしれませんコードです:ここでサービス・インターフェースで
、IService1.cs
public interface IDemineur
{
[OperationContract]
string CreationJoueur(string Name);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
// TODO: Add your service operations here
}
Service1.svc
public class Service1 : IDemineur
{
Dictionary<int, Grille> Gamepad = new Dictionary<int, Grille>();
int[,] tableGrilles = new int[20, 3];
public string CreationJoueur(string Name)
{
string joueur = "";
for (int i = 0; i < 20; i++)
{
if (tableGrilles[i, 0] != 1)
{
tableGrilles[i, 0] = 1;
tableGrilles[i, 2] = i;
joueur = "1/" + tableGrilles[i, 2];
Gamepad.Add(i, new Grille());
break;
}
if (tableGrilles[i, 1] != 2)
{
tableGrilles[i, 1] = 2;
joueur = "2/" + tableGrilles[i, 2];
break;
}
}
return joueur;
}
が、ポイントはトンでしたo配列tableGrillesを更新します。私はホストのためのデバッグを実行すると、私はそれを更新することをはっきりと見ることができますが、別のクライアントと接続するたびに、私のブレークポイントで再びデバッグモードに入り、配列は0に戻ります。
クライアント側:はるかに高く評価されるだろう
public partial class DemineurGrille : Window
{
ServiceReference1.DemineurClient leDemineur;
int noJoueur;
int noGrille;
public DemineurGrille(string name)
{
InitializeComponent();
leDemineur = new ServiceReference1.DemineurClient("*");
string noJoueurGrille = leDemineur.CreationJoueur(name);
string[] leSplit = noJoueurGrille.Split('/');
noJoueur = Convert.ToInt32(leSplit[0]);
noGrille = Convert.ToInt32(leSplit[1]);
}
助けてください、... InstanceContextModeはデフォルトでPerSessionに設定されているためです
あなたは天才です、今はすべて素晴らしいです。私は実際にはすべてのクライアントが同じ配列を更新することを望んでいました。どうもありがとう –