Aracılığıyla paylaş


IInputChannel.WaitForMessage(TimeSpan) Yöntem

Tanım

İletinin belirli bir zaman aralığı içinde ulaşıp varmadığını gösteren bir değer döndürür.

public:
 bool WaitForMessage(TimeSpan timeout);
public bool WaitForMessage (TimeSpan timeout);
abstract member WaitForMessage : TimeSpan -> bool
Public Function WaitForMessage (timeout As TimeSpan) As Boolean

Parametreler

timeout
TimeSpan

, TimeSpan zaman aşımına uğramadan önce iletinin gelmesinin beklendiği en uzun zaman aralığını belirtir.

Döndürülenler

Boolean

true aşılana kadar timeout bir ileti geldiyse; aksi takdirde false.

Özel durumlar

timeout belirtilen işlem tamamlanmadan önce aşıldı.

Belirtilen zaman aşımı sıfırdan küçük.

Örnekler

Aşağıdaki kodda bu yöntemin nasıl uygulandığı gösterilmektedir:

public bool WaitForMessage(TimeSpan timeout)
{
    return this.InnerChannel.WaitForMessage(timeout);
}

Açıklamalar

Çağrı WaitForMessage(TimeSpan) , iletinin başka bir şekilde alınmasına veya işlenmesine neden olmaz.

WaitForMessage(TimeSpan) yöntemi öncelikle kullanıcının bir işlem kullanarak iletiyi almak istediği işlem yapılan senaryolar için vardır. Yalnızca normal şekilde bunu kullanırken Receive , kullanıcının işlemi oluşturması ve ardından çağrısı Receive yapması ve iletinin işlem zaman aşımına uğramadan önce gelmesini umması gerekir ve bu mümkün olmayabilir.

Bunun yerine, kullanıcı istediği zaman aşımını (hatta sonsuz) çağırabilir WaitForMessage(TimeSpan) , sonra bir ileti geldiğinde işlemi açabilir, çağırabilir Receive ve işlemin süresi dolmadan önce iletiyi geri alabileceğinden emin olabilir.

Bu yöntem zaman uyumlu olduğundan, bir ileti kullanılabilir olana veya zaman aşımı gerçekleşene kadar geçerli iş parçacığını engeller. Bir iletinin kuyruğa gelmesini beklerken geçerli iş parçacığının engellenmesi kabul edilebilir olduğunda kullanın WaitForMessage(TimeSpan) . İş parçacığı belirtilen timeoutdeğerine kadar engellenir. Uygulama işleminin beklemeden devam etmesi gerekiyorsa zaman uyumsuz BeginWaitForMessage(TimeSpan, AsyncCallback, Object) yöntemini kullanın.

Uygulayanlara Notlar

Belirtilen aşılırsa timeout işlem döndürürfalse, zaman aşımı özel durumu değil.

Şunlara uygulanır