从VB主方法调用C#库中的异步方法

从VB主方法调用C#库中的异步方法,c#,vb.net,amazon-s3,C#,Vb.net,Amazon S3,我的应用程序是用VB.net编写的,由于我无法控制的原因,我无法更改该技术。我正在尝试使用AWS S3存储桶来存储文件。我在VB中的应用程序将需要显示一个窗口,其中列出了存储桶中的文件,并允许用户下载它们 S3中的文件列表是使用C#通过异步任务完成的 现在,当我尝试运行我的VB项目时,我得到一个错误,说项目中没有Main方法。有什么方法可以从VBMain方法调用Async方法(ListalContentsAsync)吗?只需将其同步: Sub Main() Dim objcsClass

我的应用程序是用VB.net编写的,由于我无法控制的原因,我无法更改该技术。我正在尝试使用AWS S3存储桶来存储文件。我在VB中的应用程序将需要显示一个窗口,其中列出了存储桶中的文件,并允许用户下载它们

S3中的文件列表是使用C#通过
异步任务完成的


现在,当我尝试运行我的VB项目时,我得到一个错误,说项目中没有
Main
方法。有什么方法可以从VB
Main
方法调用
Async
方法(
ListalContentsAsync
)吗?

只需将其同步:

Sub Main() 
    Dim objcsClass = New CallMeFromVB.ClassInCSharpProject()
    Dim inputChar As ConsoleKeyInfo = Console.ReadKey()
    Dim contents As New List(Of String)
    contents = objcsClass.listAllContentsAsync().GetAwaiter().GetResult()
    For Each content As String In contents
        Console.Write(content & " ")
    Next

End Sub

只需将其同步:

Sub Main() 
    Dim objcsClass = New CallMeFromVB.ClassInCSharpProject()
    Dim inputChar As ConsoleKeyInfo = Console.ReadKey()
    Dim contents As New List(Of String)
    contents = objcsClass.listAllContentsAsync().GetAwaiter().GetResult()
    For Each content As String In contents
        Console.Write(content & " ")
    Next

End Sub

你看了吗?谢谢@Dhawalk,但这是一个C#main方法调用另一个C#Async方法的解决方案。我无法在VB中使用上述问题中描述的Nito.Asyncx。我建议使用相同的模式。我还没有尝试过“VB不是AWS SDK中的一个选项”-嗯?最后我知道AWS SDK是一个编译过的nuget包;它是用什么风格的.net编写的/它是用什么风格的.net使用的并不重要。SDK在C#和VBC#中同样有效,VB.NET都是在.NET平台上运行的语言。它们可以使用以其中一种方式编写的程序集,因为所有程序集都可以编译为。你经常只看到C#教程,因为C#是更流行的语言。如果你打算在VB.NET中开发,至少学习如何阅读C,这样你就能理解教程和文档。你看过了吗?谢谢@Dhawalk,但这个解决方案是针对一个C主方法调用另一个C异步方法。我无法在VB中使用上述问题中描述的Nito.Asyncx。我建议使用相同的模式。我还没有尝试过“VB不是AWS SDK中的一个选项”-嗯?最后我知道AWS SDK是一个编译过的nuget包;它是用什么风格的.net编写的/它是用什么风格的.net使用的并不重要。SDK在C#和VBC#中同样有效,VB.NET都是在.NET平台上运行的语言。它们可以使用以其中一种方式编写的程序集,因为所有程序集都可以编译为。你经常只看到C#教程,因为C#是更流行的语言。如果你打算在VB.NET中开发,至少学习如何阅读C,这样你就能理解教程和文档。我不确定这是否需要通过
GetAwaiter
来完成?由于结果是一个
任务
我想你可以直接在任务上使用
结果
。如果它出错,通过
。结果
它将被包装在一个聚合异常中-我不想给一个似乎不太精通TAP的OP增加另一个麻烦。我不确定这是否需要通过
GetWaiter
完成?由于结果是一个
任务
我想你可以直接在任务上使用
结果
。如果它出错,通过
。结果
它将被包装在一个聚合异常中-我不想为一个似乎不太精通TAP的OP再添麻烦
Sub Main() 
    Dim objcsClass = New CallMeFromVB.ClassInCSharpProject()
    Dim inputChar As ConsoleKeyInfo = Console.ReadKey()
    Dim contents As New List(Of String)
    contents = objcsClass.listAllContentsAsync().GetAwaiter().GetResult()
    For Each content As String In contents
        Console.Write(content & " ")
    Next

End Sub