4
對於我的父母,我正在編寫一個簡單的程序,將文件從其數字照相機複製到他們的「我的文檔」文件夾中。他們總是需要我的幫助(他們技術不太先進),以便將他們的照片從相機中取出,所以我決定幫助他們。我稱之爲複印機。因爲我找不到在Java中合適的USB-監聽器,我寫了一個自己:隱藏在SystemTray中的Java線程停止
private void sync()
{
// All devices in an ArrayList
File[] roots = File.listRoots();
ArrayList<File> newList = new ArrayList<File>();
for(File f : roots)
{
newList.add(f);
}
// Delete unavailable devices
ArrayList<File> removeThese = new ArrayList<File>();
for(File f : devices)
{
if(!newList.contains(f))
{
removeThese.add(f);
}
}
devices.removeAll(removeThese);
// Add unknown devices
for(File f : newList)
{
if(!devices.contains(f) && f.canRead() && f.canWrite())
{
alarm(f); // Called when new device inserted
devices.add(f);
}
}
}
這種方法被稱爲在一個單獨的線程每1000毫秒,我想,會做。承認,這是一個骯髒的方法,但它的工作原理。我經常測試這個功能,我總是有我想要的結果。當我繼續構建我的程序時,我發現當我將程序隱藏到SystemTray時,線程將停止檢測新設備。當我再次打開時,檢測線程仍然無法工作。有誰能告訴我這是什麼原因以及如何解決?
而不是每1000毫秒調用它只是寫一個.bat文件,調用它並將其放置在他們的桌面上。我相信即使他們沒有那麼科技,他們也可以做'雙擊') – alfasin
看起來,編寫計算機驅動程序並將其安裝到父母身上似乎不會那麼麻煩。 :D – Wug
看看輪詢線程啓動點會發生什麼。莫名其妙地被打斷了? – Wolfgang