2016-06-08 7 views
0

I einen WCF-Dienst haben, wie untenWarten Async Methode ruft in C#

public bool RefreshDB() 
{ 
    if (twcPMRefresh()) 
      status = true; 
    if (twcCommonRefresh()) 
      status = true; 
} 

Die Logik innerhalb der Methoden twcPMRefresh() und twcCommonRefresh() ist asynchron und daher möchte ich warten, bis 'twcPMRefresh' exceution ist Fertig Ausführung und rufen Sie dann TwcCommonRefresh auf. Beide Methoden sind mehr sind weniger wie unten.

public bool twcPMRefresh() 
{ 
    tweets=await 
     (from tweet in GetTwitterContext(localProxyIP,fCode).Status 
     where tweet.Type == StatusType.User && 
     select tweet) 
    .ToListAsync(); 
    --use 'tweets' list to insert in database 
} 

Können Sie bitte dabei helfen. Vielen Dank!!

+0

Sie könnten die TPL verwenden und den Aufruf "Task.ContinueWith" verwenden. – Tdorno

+0

Aufgabe continueWith wird in RefreshDB() Methode vorgeschlagen? Ich habe den folgenden Weg versucht, aber immer noch kein Glück. Ist in der Syntax etwas falsch? var firstTask = new Aufgabe (() => twcPMRefresh()); var secondTask = firstTask.ContinueWith ((t) => twcCommonRefresh()); firstTask.Start(); –

+0

Es wäre genial, wenn Sie die Signaturen für die beiden Methoden zeigen würden. – Enigmativity

Antwort

0

Sie können das await async Methode:

Ihre twcPMRefresh() Unter der Annahme und twcCommonRefresh() Methoden beide ASYNC sind Sie es wie folgt schreiben:

public async bool RefreshDB() 
{ 
    if (await twcPMRefresh()) 
     status = true; 
    if (await twcCommonRefresh()) 
     status = true; 
} 

Ihre Methode RefreshDB() kann nun entweder Weise aufgerufen werden:

bool result = RefreshDB().Result() 
bool result = await RefreshDB(); //Needs an async Method or a task to be used. 
Verwandte Themen