You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中GraphServiceClient结合AWAIT使用时出现执行终止问题

VB.NET控制台应用异步调用MS Graph时程序直接终止的解决方案

问题核心是VB.NET控制台应用的主线程未等待异步任务完成就提前退出,导致程序无报错终止,而C#代码正确处理了异步等待逻辑。以下是具体解决方法:

  • 使用异步Main方法(推荐)
    从Visual Studio 2017及以上版本,VB.NET支持Async Function Main作为程序入口,直接等待异步操作完成:

    Imports Microsoft.Graph
    Imports System.Threading.Tasks
    
    Module Program
        Async Function Main() As Task
            Await GetMailMessages()
        End Function
    
        Async Function GetMailMessages() As Task
            ' 假设graphclientObj已正确初始化并完成身份验证
            Try
                Dim messages = Await graphclientObj.Users("emailid").Messages.Request().GetAsync()
                Console.WriteLine($"成功获取 {messages.Count} 封邮件")
                ' 此处添加邮件处理逻辑
            Catch ex As Exception
                Console.WriteLine($"调用Graph API出错:{ex.Message}")
                Console.WriteLine(ex.ToString()) ' 输出完整异常栈,便于排查
            End Try
        End Function
    End Module
    
  • 同步等待异步任务(兼容旧版本)
    如果你的VB.NET版本不支持异步Main,可在同步Main方法中调用Task.Wait()等待异步任务完成:

    Imports Microsoft.Graph
    Imports System.Threading.Tasks
    
    Module Program
        Sub Main()
            Dim task = GetMailMessages()
            task.Wait() ' 阻塞主线程,直到异步任务完成
        End Sub
    
        Async Function GetMailMessages() As Task
            Try
                Dim messages = Await graphclientObj.Users("emailid").Messages.Request().GetAsync()
                Console.WriteLine($"成功获取 {messages.Count} 封邮件")
                ' 此处添加邮件处理逻辑
            Catch ex As Exception
                Console.WriteLine($"调用Graph API出错:{ex.Message}")
                Console.WriteLine(ex.ToString())
            End Try
        End Function
    End Module
    
  • 避免使用Async Sub处理业务逻辑
    不要用Async Sub定义业务方法,这类方法的异常无法被上层捕获,可能导致程序静默崩溃。始终使用Async Function返回Task或Task(Of T),便于等待和异常处理。

内容的提问来源于stack exchange,提问作者Pooja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:40:31