Fehler: "CancellationToken" ist im Namespace "System.Threading" nicht eindeutig

  • VB.NET
  • .NET (FX) 4.0

Es gibt 30 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Fehler: "CancellationToken" ist im Namespace "System.Threading" nicht eindeutig

    Hallo ich versuche mittels VB2010 Express eine Datei auf Google Drive hochzuladen.

    Die Verweise der Google Bibliotheken habe ich manuell gesetzt, da NuGet mit der Expressversion nicht funktioniert (bzw ich nicht rausgefunden habe wies geht).


    Weiters habe ich folgendes Beispiel in vb übersetzt: developers.google.com/drive/web/quickstart/quickstart-cs. Soweit sogut.

    Jedoch beiße ich mir an folgendem Fehler die Zähne aus: "CancellationToken" ist im Namespace "System.Threading" nicht eindeutig .
    Ich vermute, dass beim manuellen setzen der Veiweise etwas schief gegangen ist.

    Vielleich hat jemand von euch eine Idee wie ich das Problem lösen könnte.

    Gruß Foogo

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

    @Foogo Mir scheint, es gibt die Struktur und ggf. ein Enumber mit diesem Namen.
    Struktur: MSDN,
    Enum: Dein Link.
    Wie sieht Dein Code aus?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    In der Zeile 22 tritt das Problem auf. Ich habe auch schon versucht System.Threading.CancellationToken.None durch taskCancellationToken:=Nothing zu ersetzten. wobei dann der Feher "AggregateException wurde nicht behandelt." auftritt.

    Im Objektkatalog unter System.Threading gibt es 2 Einträge zu Cancellation Token:
    +CancelltaionToken [mscorlib]
    +CancellationToken[System.Threading.Task]


    VB.NET-Quellcode

    1. Imports Google
    2. Imports Google.Apis.Drive.v2
    3. Imports Google.Apis.Auth.OAuth2
    4. Imports Google.Apis.Drive.v2.Data
    5. Imports Google.Apis.Services
    6. Public Class Form1
    7. Private Sub ButFileopen_Click(sender As System.Object, e As System.EventArgs) Handles ButFileopen.Click
    8. OpenFileDialog1.ShowDialog()
    9. End Sub
    10. Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
    11. TBFilePath.Text = OpenFileDialog1.FileName
    12. End Sub
    13. Private Sub ButUpload_Click(sender As System.Object, e As System.EventArgs) Handles ButUpload.Click
    14. Dim credential As UserCredential = GoogleWebAuthorizationBroker.AuthorizeAsync(New ClientSecrets With {.ClientId = "id", .ClientSecret = "secret"}, New String() {DriveService.Scope.Drive}, "admin", System.Threading.CancellationToken.None).Result
    15. Dim service As New DriveService(New BaseClientService.Initializer With {.HttpClientInitializer = credential, .ApplicationName = "Drive API Sample"})
    16. 'Dim bookselve As Bookshelves = Await service.Mylibrary.Bookshelves.List.ExecuteAsync
    17. 'Dim mm = service.Volumes.Get("9780330441230")
    18. Dim body As New Google.Apis.Drive.v2.Data.File
    19. body.Title = "My document"
    20. body.Description = "A test document"
    21. body.MimeType = "text/plain"
    22. Dim byteArray() As Byte = System.IO.File.ReadAllBytes(TBFilePath.Text)
    23. Dim stream As New System.IO.MemoryStream(byteArray)
    24. Dim request As FilesResource.InsertMediaUpload = service.Files.Insert(body, stream, "text/plain")
    25. request.Upload()
    26. Dim file As Google.Apis.Drive.v2.Data.File = request.ResponseBody
    27. End Sub
    28. End Class

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Foogo“ ()

    Wie ist dies deklariert?

    Foogo schrieb:

    VB.NET-Quellcode

    1. GoogleWebAuthorizationBroker.AuthorizeAsync
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Public Shared Function AuthorizeAsync(clientSecrets As Google.Apis.Auth.OAuth2.ClientSecrets, scopes As System.Collections.Generic.IEnumerable(Of String), user As String, taskCancellationToken As System.Threading.CancellationToken, Optional dataStore As Google.Apis.Util.Store.IDataStore = Nothing) As System.Threading.Tasks.Task(Of Google.Apis.Auth.OAuth2.UserCredential) Member von Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker

    Zusammenfassung:Asynchronously authorizes the specified user.

    Parameter:clientSecrets: The client secrets.scopes: The scopes which indicate the Google API access your application is requesting.user: The user to authorize.taskCancellationToken: Cancellation token to cancel an operation.dataStore: The data store, if not specified a file data store will be used.

    Rückgabewerte:User credential.

    Hinweise:In case no data store is specified, Google.Apis.Util.Store.FileDataStore will be used by default.

    bzw hier zu finden : contrib.google-api-dotnet-clie…55eeb08fadd27b33e0193327c
    Unklar.

    Foogo schrieb:

    System.Threading.CancellationToken.None
    ist äquivalent zu EventArgs.Empty.
    Pack das mal in eine separate Variable:

    VB.NET-Quellcode

    1. Dim taskCancellationToken As System.Threading.CancellationToken = System.Threading.CancellationToken.None
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das Problem verschiebt sdadurch nur. Und der Fehler : "CancellationToken" im Namespace "System.Threading" nicht eindeutig
    bezieht sich nun auf: Dim taskCancellationToken As System.Threading.CancellationToken = System.Threading.CancellationToken.None
    Welches FrameWork nutzt Du?
    Dies ist erst ab 4.0 verfügbar.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Microsoft Visual Studio 2010
    Version 10.0.40219.1 SP1Rel
    Microsoft .NET Framework
    Version 4.5.50938 SP1Rel

    Installierte Version: VB Express

    Microsoft Visual Basic 2010 01012-169-2510015-70283
    Microsoft Visual Basic 2010

    Hotfix für Microsoft Visual Basic 2010 Express - DEU (KB2635973) KB2635973
    Dieser Hotfix ist für Microsoft Visual Basic 2010 Express - DEU vorgesehen.
    Wenn Sie später ein aktuelleres Service Pack installieren, wird der Hotfix automatisch deinstalliert.
    Weitere Informationen erhalten Sie unter support.microsoft.com/kb/2635973.

    Microsoft Visual Basic 2010 Express - DEU Service Pack 1 (KB983509) KB983509
    Dieses Service Pack ist für Microsoft Visual Basic 2010 Express - DEU vorgesehen.
    Wenn Sie später ein aktuelleres Service Pack installieren, wird das vorliegende Service Pack automatisch deinstalliert.
    Weitere Informationen erhalten Sie unter support.microsoft.com/kb/983509.

    Wie gesagt ich denke das Problem fußt in der doppelten Struktur weil CancellationToken einmal in mscorlib definiert ist und einmal von der Google Bibliothekr System.Threading.Task

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Foogo“ ()

    Foogo schrieb:

    Im Objektkatalog unter System.Threading gibt es 2 Einträge zu Cancellation Token:
    +CancelltaionToken [mscorlib]
    +CancellationToken[System.Threading.Task]
    Komisch - bei mir nicht.
    Bei mir gibts inne Assembly mscorlib System.Threading.CancellationToken - weitere CancelationToken gibts bei mir nicht.
    Es gibt bei mir (FW4.0) auch keine Assembly "System.Threading.Task", sondern das ist ein Namespace, welcher in verschiedenen Assemblies aufgenommen wird, u.a. auch in mscorlib.
    Nimm mal das vollständige .NET Framework 4.0


    Schon versucht hat aber nichts gebracht.

    Bei mir gibts inne Assembly mscorlib System.Threading.CancellationToken - weitere CancelationToken gibts bei mir nicht.
    Es gibt bei mir (FW4.0) auch keine Assembly "System.Threading.Task", sondern das ist ein Namespace, welcher in verschiedenen Assemblies aufgenommen wird, u.a. auch in mscorlib.

    Hast du die Bibliothek von Google System.Threading.Task installiert?
    @Foogo So soll es aussehen:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim taskCancellationToken As System.Threading.CancellationToken = System.Threading.CancellationToken.None
    3. End Sub
    Bilder
    • Token.jpg

      30,58 kB, 776×167, 145 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Foogo schrieb:

    Hast du die Bibliothek von Google System.Threading.Task installiert?
    Nein.
    Das ist eben die Frage, ob Google in seiner Assembly ebenfalls ein System.Threading.CancellationToken definiert hat. Dann hätten die da erheblich gebugt.
    Aber das musst du doch in deim OB nachgugge könne, die google-Lib erweitern, und dort den Namespace System.Threading suchen.

    Ah - vlt. musst du deinen OB per Kontextmenü umstellen von "Namespaces anzeigen" auf "Container anzeigen".

    Foogo schrieb:

    bei mir
    Hast Du inzwischen Framework 4.0 eingestellt?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!