Ich arbeite an einem Code, der regelmäßig eine Webseite für ein Bild scannt, die Pixelfarben des Bildes scannt und, wenn eine Farbe gefunden wird, asynchron mit einer Web-API verbindet.RunAsync() korrekt implementieren
Ich habe herausgefunden, wie man das Farbscannen und die Verbindung getrennt macht und jetzt muss ich die beiden Logiken verbinden, aber ich bin mir nicht sicher, wie es am besten geht.
Die Scan-Web-Seite/Bild-Scan-Code ist im Wesentlichen aus:
static void Main(string[] args)
{
while (true)
{
try
{
System.Threading.Thread.Sleep(5000); //refresh speed
string color = ReadColor(driver, webElement);
if (color== "blue")
{
//should connect for blue case and run the Blue() function below
}
if (color== "green")
{
//should connect for green case
}
}
catch
{
}
}
}
die Httpclient Verbindung so geht:.
static HttpClient client = new HttpClient();
static void Main()
{
RunAsync().Wait();
}
static async Task RunAsync()
{
client.BaseAddress = new Uri("website");
Data data = new Data { };
try
{
data = await Green();
data = await blue(); //functions to run depending on color
}
catch (Exception e)
{
}
}
wie sollte die RunAsync(), wait(); Methode wird im ersten Beispiel korrekt eingefügt und wie soll ich die richtige Funktion aufrufen?
EDIT:
ok so schließlich ich es auf diese Weise tun:
static void Main(string[] args)
{
while (true)
{
try
{
System.Threading.Thread.Sleep(1000);
string signal = ReadGraph(driver, webElement); //////READ CHART
if (signal == "blue")
{
Task.Run(async() => await RunAsync(signal)).Wait();
}
if (signal == "green")
{
RunAsync(signal);
}
}
catch
{
}
}
}
jedoch, wenn die RunAsync genannt wird, führt es aber der Faden nie zur Hauptschleife zurück. Ich versuchte
Task.Run(async() => await RunAsync(signal)).Wait()
Task.Run(async() => await RunAsync(signal)).Wait()
RunAsync(signal);
RunAsync(signal).wait();
mit dem gleichen Ergebnis, was mache ich falsch?
Aufruf 'RunAsync() Warten()' ist eine solche Verschwendung. Warum haben Sie nicht einfach eine 'Run'-Methode, wenn Sie einen Async asynchronisieren? – Enigmativity
danke @Enigmatismus Ich habe ein Update mit meinen Versuchen gepostet, da ich nicht ganz sicher bin, wie man das macht – user289829
Verwenden Sie '.Wait()' nicht. Wenn Sie es tun, ist es sinnlos, Async zu verwenden. – Enigmativity