0
我需要在C#中使用Qt C++與另一個應用程序進行通信。 原理是C#應用程序啓動Qt應用程序並將Qt返回值傳遞給C#應用程序。 這樣做的最佳方式是什麼?兩個應用程序之間的通信(一個在QtC++中,另一個在C#中)
蓋特
P.S:我用C++初學者和中級的C#
我需要在C#中使用Qt C++與另一個應用程序進行通信。 原理是C#應用程序啓動Qt應用程序並將Qt返回值傳遞給C#應用程序。 這樣做的最佳方式是什麼?兩個應用程序之間的通信(一個在QtC++中,另一個在C#中)
蓋特
P.S:我用C++初學者和中級的C#
您在這裏有幾個選項。
如果返回的值可以適合整數,那麼您絕對應該使用Qt進程的ExitCode
。
如果返回的值比較複雜,則必須編寫更復雜的IPC系統(進程間通信)。有幾種選擇過於:
謝謝你的迴應。 我的變量實際上更加複雜,我已經考慮過扁平文本文件,但是我需要在每次修改時都快速通知,因此可以知道文本文件是否因事件而改變了? 否則,可以創建Qt Dll並將其與我的程序C#一起使用? 我對MSMQ並不熟悉,但我會對此有所瞭解,我相信Web服務對於我的應用程序來說非常適合,但這是個好主意 – Gat 2012-02-21 10:18:13
您可以編寫一些代碼以在文本文件(基於事件)更改(在.Net中:請參閱'FileSystemWatcher'),但這是一種退出緩慢/低效的方法。你將不得不在文件上處理併發讀/寫操作,這可能會非常棘手。 MSMQ是一種很好的方法(面向消息的方法),因此您可以讓您的Qt進程將消息發佈到隊列中,並且C#進程在消息在隊列中可用時(使用通知系統而不是輪詢)將其出隊。你也應該能夠使用P/Invoke在C#程序中使用Qt dll。 – ken2k 2012-02-21 10:45:06
是的,謝謝你這個解決方案,我不需要一個非常好的優化這個交互和FileSystemWatcher是我更快的解決方案開發。我會在更多瞭解MSMQ的時候改變這一點 – Gat 2012-02-21 16:16:45