Accès à l'interface avec WCF
Bonjour,
Je suis nouveau sur ce forum et j'espère avoir posté dans la bonne section.
Voici mon problème :
J'ai 2 applications (WPF) l'une est cliente et l'autre serveur et communique actuellement avec WCF.
Cela fonctionne très bien mais j'aimerais que du coté de mon serveur je puisse accéder à l'interface graphique (récupérer et écrire des valeurs dans les différents controles).
Voici les pistes que j'ai déja exploré :
1) Coté Server : une classe qui implémente l'interface serveur
Code:
1 2 3 4 5 6 7 8 9 10 11
| [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant, InstanceContextMode = InstanceContextMode.PerSession, UseSynchronizationContext = false)]
public class FxComServer : IServer
{
#region IServer Membres
public string ContractOne(int val1, int val2)
{
return (val1 + val2).ToString();
}
#endregion
} |
Je démarre alors mon service de la facon suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public partial class Window2 : Window
{
public Window2()
{
InitializeComponent();
//Instantiate new ServiceHost
myServiceHost = new ServiceHost(typeof(Window2));
NetTcpBinding binding = new NetTcpBinding();
ServiceEndpoint endPoint = myServiceHost.AddServiceEndpoint(typeof(IServer), binding, "net.tcp://localhost:4000");
//Open myServiceHost
myServiceHost.Open();
}
} |
--> Cela fonctionne mais évidemment ContractOne n'as pas accès au controle de Window2
2) J'ai ensuite essayé que Window2 implémente directement IServer mais cela me génère une exception lors de l'appel du service :
Citation:
Le thread appelant doit être en mode STA, comme l'exigent de nombreux composants de l'interface utilisateur.
Voilà j'espère avoir été assez clair sur mon problème.
Merci d'avance aux personnes qui tenterons de m'aider.