none
鎖定某method只能同時一個在執行… RRS feed

  • 問題

  • 請問:

    我有一支windows service,會每分鐘去call某web service來做事…

    在這個web serivce中,會呼叫好幾個method來做好幾件事…

     

    難題是,如果有某個method,會做超過一分鐘,但我卻不希望,一分鐘後,windows service第二次呼叫web serivce時,又去跑一次那個method…

     

    也就是說,同一時間內,我希望那個method只能有一個thread在執行,這樣要怎麼做呢?

    2007年7月7日 下午 12:47

所有回覆

  • Hi,

    不知道您Service之中是怎麼做相關動作的,參考看看

    1. Service本身去判斷旗標,如果還沒有執行完成就不理會用戶端呼叫或是return失敗

    2. Service本身提供查詢方法讓用戶端得知目前是否忙碌中

    2007年7月7日 下午 01:16
  • 我windows service是設定成每分鐘自動執行…

    所以好像前一分鐘的還執行到一半沒完成,

    一分鐘後,他又會再呼叫一次web service的樣子?

     

    由於我的web service會一直存取資料庫…

    假設他每分鐘都一直重覆call web service的話,

    勢必會造成資料不一致等狀況…

     

     

    2007年7月7日 下午 02:26
  • 最簡單的方法就是用旗標值來判斷了,這個旗標值可以放在全域變數中 .

    當 Method 執行完時就設定為 true,而判斷程式發現旗標值為 true 時表示可以再繼續由 Web Service

    下載資料,然後再設定旗標為 false,再呼叫 Method 執行 .

    2007年7月8日 上午 01:17
    版主
  • HI,

     

    您可以為欲控制的XML WEB SERVICE類別加上[Synchronization] Attribute看看

     

    tihs

    2007年7月8日 上午 01:36