2015-09-27 36 views
-3

我在計算控制檯應用程序中的數據之後卡住了我的項目,我需要將它傳遞給窗體窗體應用程序,然後在條形圖圖表上顯示值。我怎樣才能將我的變量值從控制檯應用程序傳遞給窗體窗體應用程序

+0

您的Windows窗體應用程序是否調用您的控制檯應用程序? – ycsun

+0

你是否想用一些參數運行你的WinForms應用程序,或者你想在兩個啓動的應用程序之間交換一些數據? – Spawn

+0

他們都在同一個項目 –

回答

0

您有一整套選擇,各種運輸方式,複雜程度,性能&開銷不一。一個簡單的國家:

假設你有一個服務:

public class ServiceType 
{ 
    public void DoSomething(string someData) 
    { 
     Debug.WriteLine("Got this " + someData); 
    } 
} 
在託管應用程序

然後(Windows窗體):

 IDictionary properties = new Hashtable(); 
     properties.Add("authorizedGroup", "NT AUTHORITY\\NETWORK SERVICE"); // or some other user account that runs the console app 
     properties.Add("portName", "myApp" + Guid.NewGuid()); // if you rapidly restart your app then the pipe may still be there 
     IpcServerChannel serverChannel = new IpcServerChannel(properties, null); 
     ChannelServices.RegisterChannel(serverChannel, true); 
     RemotingConfiguration.RegisterWellKnownServiceType(typeof(ServiceType), "service", WellKnownObjectMode.Singleton); 

然後在控制檯應用程序:

  var pipename = System.IO.Directory.GetFiles(@"\\.\pipe\").FirstOrDefault(x => x.Contains("myApp"))) 

      IpcClientChannel clientChannel = new IpcClientChannel(); 
      ChannelServices.RegisterChannel(clientChannel, true); 
      var s = (ServiceType)Activator.GetObject(typeof (ServiceType), "ipc://" + pipename.Replace(@"\\.\pipe\", string.Empty) + "/service"); 
      s.DoSomething("data"); 
      ChannelServices.UnregisterChannel(clientChannel); 

當然,您必須共享ServiceType的庫。

相關問題