このポストは序文の前に警告があります。私はかなり有能なプログラマーですが(4年間の大学で新鮮なものになることができれば)、私はWindowsプログラミングには非常に慣れています。私は.NET C#(バージョン4)でプログラミングしています。ローカルオブジェクトへの.NET WCFアクセス
「クライアント」構成ユーティリティ(Windowsフォームアプリケーション)を使用してリモートから構成できるWindowsサービスを作成しようとしています。私がWCFをIPCに選択したのは、WCFがWindows Remotingの代わりであり、Remotingが段階的に廃止されているからです。
私の問題は、設定ユーティリティがWindowsサービスに接続するときに作成されたWCFインスタンスから既にインスタンス化されたオブジェクトにアクセスする方法を理解できないことです。
おそらく、この非常に簡略化されたコードブロックは、私が何をしようとしているのか、より多くのアイデアを与えるでしょう。 (私が行くようにロジックでうまくいけば、何も恥ずかしいエラー。それを作りません。)
class Blah
{
/*
* Create configuration object that is read
* by myApp and written to by myServ.
*/
ConfigManager confMan = new ConfigManager();
MyService myApp = new MyService(ref confMan);
Thread myAppT = new Thread(new ThreadStart(myApp.init));
myAppt.Start();
myAppT.Join();
//The confServ will handle all of the WCF related stuff
ConfigServer confServ = new ConfigServer(confMan);
Thread confServT = new Thread(new ThreadStart(confServ.init));
confServT.Start();
confServT.Join();
}
class ConfigManager
{
public bool someAttribute;
public ConfigManager()
{
}
public init()
{
someAttribute = false;
}
}
class MyService
{
ConfigManager confMan;
public MyService(ref ConfigManager confMan)
{
this.confMan = confMan;
}
public int init()
{
while(1==1)
{
if(confMan.someAttribute == true)
return 0;
}
}
}
class ConfServ
{
ConfigManager confMan;
public ConfServ(ref ConfigManager confMan)
{
this.confMan = confMan;
}
public void init()
{
//Do all the ServiceHost WCF stuff
}
}
[ServiceContract]
public interface IModConfig
{
[OperationContract]
void changeFalse();
void changeTrue();
}
/*
* How can I get my instance of confMan
* into this instance of ModConfig
*/
class ModConfig: IModConfig
{
public void changeFalse()
{
/*
* I want to change confMan.someAttribute
* to false here.
*/
}
public void changeTrue()
{
/*
* I want to change confMan.someAttribute
* to true here.
*/
}
}
は基本的に私はちょうどMyServiceでインスタンスによって参照されているCONFIGMANAGERインスタンスに書き込むことができるようにしたいです。
私は私の問題を明確に定義したと思います。私のポストをさらに詳しく説明する必要があるかどうかを教えてください。
私はソケットを開くことを考えましたが、それはIPCフレームワークを使う目的を打ち負かしているようです。 – bdeetz
スレッドには何がありますか? 'Thread myAppt ... myAppT.Join();を' myApp.init(); 'に置き換えます。 'confServer.init'と同じです。読みやすく、デバッグが簡単です。 –