2016-05-25 7 views
1

WindowsスタンドアロンアプリケーションでApplication.DoEvents()が行うことをエミュレートするベストプラクティスは何ですか?ウェブアプリケーションのapplication.doevents()に相当しますか?

私はvb.netのWebアプリを持っているし、次のんのボタンを持つページがあります:

(ボタンクリック)

サブ(ボタンクリック)

     は、      クリックしたボタンを含むasp.panelを隠す
           )EmailPeople(            デシベル
にレコードを挿入

End Subの

サブEmailPeople()
            1以上の人にメールを送っ
終了サブ


クリックすると、電子メールサブがそのことをしている間に5〜6秒の一時停止があり、その後パネルが消えます。私は、パネルが即座に消えて、ユーザーがボタンマッシュを続けて余分なレコードをデータベースに挿入しないようにすることをお勧めします.....

アドバイス?

+1

はそれが産卵に、より実用的ではないでしょうルーチンは別のスレッドになっていますか? –

+0

私のアドバイス:それをしないでください。ポストバックをしないでください。 AJAXを介して呼び出すWebメソッドを作成するだけです。それが成功し、パネルを非表示にすると仮定できます。 Javascript関数を使用して実際の結果を処理できます。 –

答えて

0

Application.DoEvents

おかげで悪で、それを使用する理由がなかったです。そして、それを使う理由は決してありません。

独自のスレッド(async関数)を作成することができます(Chris Fannin氏)、ロジックをWebサービスに移動してajaxリクエストを行うことができます。また

の.Net 4.5 SendMailAsync(System.Net.Mail)というメソッドを持っている

このサンプルは、あなたが正しい方向に得るのを助けることができます可能性がありは: Send Mail with Background Thread

関連する問題