2010-03-02 71 views
0

如何撤消在Vb中發送,保存或刪除,就像Gmail在郵件中使用此功能一樣。 Gmail使用的功能是,他們正在將郵件排隊5秒,如果用戶在5秒之前單擊撤消,整個發送過程將被撤回。如何在Gmail中「撤消發送」?

現在我想要的是在我的Vb.net應用程序中實現這一點。有沒有任何代碼可以做到這一點。請幫忙 ?

+1

您的問題含糊不清。 – leppie 2010-03-02 11:59:18

回答

13

關於「撤消發送」功能,最明顯的做法是實際上不會「執行」您想要「撤消」的操作。

我的意思是:

  • 當「發送」,用戶點擊,你真的不應該將消息發送
  • 相反,你應該把它標記爲「在X秒發送」 - 將其放在某個隊列中,例如
  • 這意味着它只會在X秒後發送,而不是立即發送。
  • 在幾秒鐘這個X號碼,如果用戶點擊「撤銷發送」,你就必須從「等待隊列」

當然刪除郵件,在郵件無法「撤銷發送」它已經被髮送了:它已經從你的服務器上消失了,你不能再做任何事情了。

要實現這一點,你將需要:

  • 一些隊列動作
  • 將您的資料到當用戶點擊這個隊列中「送」
  • 有一些批次實際發送已超過X秒的隊列中的數據
  • 當用戶單擊「撤消發送」時,從隊列中刪除數據。


相同的思想可以應用到「撤消刪除」:

  • 當「刪除」,不physicilly刪除數據
  • 取而代之的是用戶點擊,使用一些布爾標誌以指示爲已刪除
  • 然後,它應該被認爲的,未摻雜的是缺失只意味着去激活該標誌

這可以很容易地用任何語言來實現的:

  • 添加is_deleted場對數據
  • 當顯示數據,過濾那些針對這個標誌被允許
  • 當刪除,而不是物理刪除,設置此標誌
  • 當未刪除,未設置此標誌


「撤消保存」可以是一個有點硬ER:一個解決方案是不是隻保留一個版本的消息,但有幾個:

  • 每次用戶點擊「保存」,你應該存儲消息
  • 這意味着你」的新版本我會在一段時間後,結束許多版本的消息
  • 這將允許你「回來」到以前的版本,從歷史中恢復它。

這是可以做到:

  • 添加一個名爲像你的數據 「version」 新領域。
  • 每次用戶保存時,只需增加該字段,並存儲數據副本,即從不實際更新任何現有數據,但始終插入新版本的數據。
  • 然後,「撤消保存」僅意味着「獲取以前版本的數據」
+0

是的,我知道,我無法撤消發送,但我的重點在這裏是我可以在VB中做到這一點? – ahmed 2010-03-02 12:02:10

+0

@ahmed當然是的 – Yacoby 2010-03-02 12:07:43

+0

謝謝你......謝謝 – ahmed 2010-03-02 12:12:17