Async / Await Methode mit eigener Structure

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Daniel Baumert.

    Async / Await Methode mit eigener Structure

    Hallo.

    Was ist an dieser Methode falsch?

    VB.NET-Quellcode

    1. Private Async Function LoadInterests() As Task(Of List(Of MainInterestCategory))
    2. Return Await Task.Factory.StartNew(Function() As Task(Of List(Of MainInterestCategory))
    3. Dim MainPs As New List(Of MainInterestCategory)
    4. MainPs.AddRange(LoadInterestMainCategories(LoadInterestBasicCategories.Select(Function(c) c.MainCategoryId).ToArray))
    5. MainPs = (From l In MainPs Order By rand.Next(MainPs.Count)).Distinct.ToList
    6. Return MainPs
    7. End Function)
    8. End Function




    MainInterestCategory ist eine selbstdefinierte Structure.


    Jetzt gibt er mir die Meldung:

    Fehler 1 Der Wert vom Typ "System.Collections.Generic.List(Of MainInterestCategory)" kann nicht in "System.Threading.Tasks.Task(Of System.Collections.Generic.List(Of MainInterestCategory))" konvertiert werden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Daniel Baumert“ ()

    Erkennst du den Unterschied?

    VB.NET-Quellcode

    1. Function() As Task(Of List(Of MainInterestCategory))
    2. ' und
    3. Dim MainPs As New List(Of MainInterestCategory)


    Du sollst einen Task(Of List(Of MainInterestCategory)) zurückgeben,
    aber du machst ja Return MainPs und gibt so nur die Liste zurück.

    Ich hoffe, ich konnte dir helfen.

    MFG

    Alex-Digital :D
    ~ Alex-Digital :D

    if(!Internet.VBP.Get<User>("Alex-Digital").IsOnline) this.Close(); :D
    Hat mich ehrlichgesagt nicht weitergebracht, deine Antwort.

    Ich müsste mal wissen, wie man eine neue List(Of T) definiert und wie man sie returnt, asynchron mit diesem Task Namespace.

    Also mit deinem Passepartout Code ... das weiß ich auch, sorry.

    Die Frage ist, wie man das mit Task macht.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Daniel Baumert“ ()

    Tjoa, Du solltest deinen Task mit "Await" aufrufen, insofern Du dann den Datentyp haben willst.
    Geht das nicht, so musst Du halt das Result so aufrufen, indem Du die Response abrufst und davon das Result (afaik).
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Nö.
    Ich bitte Dich, Du wirst doch wohl mittlerweile MSDN, IntelliSense usw. bedienen können, oder?
    Zumindest ein Await-Aufruf sollte jeder hinbekommen.

    Die Methode "GetResponse" lässt Dir dann das zurück, was Dir das "Result" überlässt.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ich glaube , dass ich mich nicht deutlich genug ausgedrückt habe.

    Also mit .GetResponse() finde ich da übrigens nichts.

    Also eigentlich meinte ich folgendes:



    VB.NET-Quellcode

    1. Option Strict On
    2. Module Module1
    3. Sub Main()
    4. Console.ReadKey()
    5. End Sub
    6. Public Structure OwnStruct
    7. Public Name As String
    8. Public TestB As Boolean
    9. End Structure
    10. Private Async Sub Test()
    11. Dim D As List(Of OwnStruct) = Await Funktion()
    12. For Each p As OwnStruct In D
    13. Console.WriteLine(String.Concat(p.Name, " | ", p.TestB))
    14. Next
    15. End Sub
    16. Private Async Function Funktion() As Task(Of List(Of OwnStruct))
    17. Return Await Task.Factory.StartNew(Function() As Task(Of List(Of OwnStruct()))
    18. Dim dd As New List(Of OwnStruct)
    19. d.Add(New OwnStruct() with {.Name = "Test" ,.TestB = False}})
    20. Return d
    21. End Function)
    22. End Function
    23. End Module



    Wie bekomme ich das korrekt hin?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Daniel Baumert“ ()