2013-05-30 105 views
-1

我從一個軟件(LabView)調用一個用C++編寫的DLL(VS2012),它通過FTP將一個文件上傳到服務器上。運行時DLL停止主線程

當DLL正在上傳文件(15MB)時,它不會讓LabView繼續執行其他任務。 這個問題怎麼解決?

+0

線程或進程? –

+1

單獨的線程? – user1810087

+0

是的,單獨的線程,但是怎麼做到這一點?你有任何可以幫助的鏈接? – LppEdd

回答

3

無論你在C++端要做什麼調用線程安全,你都需要在LabVIEW中配置調用不要在UI線程中運行(爲了安全起見,我相信這是默認配置) 。雙擊節點並選擇任意線程選項中的運行。另外,如果你想確保在自己的線程中運行它,你可以把它放在一個單獨的VI中,並且改變該VI的執行設置以在不同的執行系統中運行。 LabVIEW不會直接控制線程,因爲它可以自行管理線程,但這應該使VI在另一個線程中執行。

1

使用FTP的操作是長期的。 最好在另一個線程中執行這樣的操作。

+0

這怎麼能做到? – LppEdd

+0

Dll函數也在主線程中執行,並且您的應用程序等待很長時間。 你有沒有使用多線程? 好的例子在這裏[鏈接](http://stackoverflow.com/questions/12437395/a-simple-example-of-boost-multithreading) – fpohtmeh

+0

我從來沒有使用多線程,所以我尋求幫助。謝謝! – LppEdd