我正在使用QFileDialog
均爲getOpenFileName
和getSaveFileName
。我在網絡上有一個文件(慢速連接),我加載了getOpenFileName
。然後,如果我嘗試創建新的QFileDialog
,則需要永久加載。QFileDialog慢速網絡
我用Process Monitor查看了進程,我可以看到它在我上次打開文件的網絡位置的每個文件中緩慢爬行。在我重新啓動計算機之前它一直很慢。我能做些什麼來加快速度?
下面是一些代碼:
打開文件對話框
QString filename;
QFileDialog fd(this);
filename = fd.getOpenFileName(this,tr("Open CSV File"), ".",tr("CSV Files (*.csv)"));
保存文件對話框
QString filename;
QFileDialog fd(this);
filename = fd.getSaveFileName(this,tr("Save CSV File"), ".",tr("CSV Files (*.csv)"));
謝謝。
要迂腐,你*可以*做些什麼。您可以自己重新實現這些功能,並以不同方式處理網絡響應緩慢(例如,通過顯示錯誤 - 顯然無法更快地獲得實際結果)。 –
@JesperJuhl是的,不幸的是,大多數文件系統訪問是同步的,因爲操作系統的內部經常被破壞,並且完全隱藏了現實世界的異步性。所以例如通常您可以異步地從大文件中讀取塊,但即使您嘗試將其作爲重疊/異步操作執行,也會阻止讀取目錄內容。你可以做的最好的辦法是把它全部扔進工作者線程並顯示你自己的對話框,並在OS調用返回時停止線程。這是浪費和傷心。原生對話可能是異步...但不是因爲VFS dir迭代不是:( –
所以,正如我所說...;) –