在Windows窗體窗口中,多個事件可以觸發異步方法。該方法下載一個文件並對其進行緩存。我的問題是我想讓該方法執行一次。換句話說,我想阻止文件被多次下載。C多線程和協議#
如果下載文件的方法被觸發兩次,我希望第二個調用等待文件(或等待第一個方法完成)。
有人有關於如何實現這一點的想法?
UPDATE:我只是試圖防止不必要的下載。在我的情況下,當客戶將鼠標放在ListBox中的某個項目上超過幾毫秒時,我們開始下載。我們假設用戶將點擊並請求文件。可能發生的事情是,用戶將鼠標懸停在項目上一秒鐘,然後單擊。在這種情況下,兩個下載開始。我正在尋找處理這種情況的最佳方式。
UPDATE 2::用戶可能會將鼠標移動到多個項目上。結果是,會發生多次下載。在這種情況下,我並沒有很強硬,但現在如果我們面對這種情況,我們不會放棄下載。該文件將被下載(文件通常在50-100kb左右),然後將被緩存。
如果你能理清我的一些假設(下面),我可以用代碼更新我的答案。 – 2009-01-14 21:33:14
更多細節將有所幫助。您是否試圖確保兩個相互競爭的下載之間的帶寬沒有被分割或避免不必要地下載相同的資源? – AnthonyWJones 2009-01-14 21:33:31
你可以一次下載多個文件嗎?如果他們在下載完成之前改變主意,是否放棄第一次下載並開始另一次下載? – 2009-01-14 22:39:14