从vb.net调用c#挂起

问题描述

在C#项目中,我编写了一个静态异步任务,以通过tmpt-relay发送电子邮件。 主要功能调用此任务。 一切正常。 我的问题是我正在从vb.net项目中调用函数,它也可以正常工作,已发送电子邮件,但vb.net挂在了c#-call

我在c#中的代码

public class SmoffMail
    {
        public static string sRet;

        public string sendMail(string mailto)
        {
            RunAsync(mailto).Wait();
            return sRet;
        }

       static async Task RunAsync(string mailto){

            MailjetClient client = new MailjetClient("419cce0b9807d1016642156966fc4ec1",....    
        
            sRet = "ok.....";
        }
    }

在vb.net中,我这样称呼它:

Public Class Form1
    Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click

        Dim smail As New smoff.Mailjet.SmoffMail
        Dim i As Integer = 0
        Dim sRet As String = ""

        sRet = smail.sendMail("xxxxxxxh@bluewin.ch")

        MsgBox(sRet)

    End Sub
End Class

因此调用了smail.sendMail()函数,但该函数挂起了,代码中的下一行(msgBox)很麻烦。

感谢您的帮助

解决方法

您的C#应该如下所示:

def lambda_handler(event:,context:)
    uri = URI("")
    http =  Net::HTTP.new(uri.host,uri.port)
    http.use_ssl = true
    req = Net::HTTP::Get.new(uri)
    req.basic_auth "username","password"
    res = http.request(req)
    res.body
end

您的VB应该如下所示:

public class SmoffMail
{

   static async Task<string> SendMailAsync(string mailto){

        MailjetClient client = new MailjetClient("419cce0b9807d1016642156966fc4ec1",....    
    
        return "ok.....";
    }
}

在等待2 GB附件上传时,让您的VB返回绘制UI,否则没有任何同步提示

,

我找到了解决方案,问题不是我的代码,而是API Mailjet.client。 更改对此API的调用后,效果很好