簡體   English   中英

VBA 是否支持從 C# 類導入的 Task.Wait()?

[英]Does VBA support Task.Wait() from a C# class import?

我編寫了一個 C# 類,它連接到 Dropbox 並允許您上傳、下載、刪除和生成鏈接文件。

它正在使用 Windows 窗體,但我必須從 VBA (Microsoft Access) 訪問它。 當它轉到 task.Wait() 時,問題就來了。 我已經“調試”了這個拋出的異常,然后就沒有通過。

public DropBox()
{
    //Empty constructor because VBA doesn't support constructors with args
}

public void Connect(string tokenUser)
{
    try
    {
        dropbox = new DropboxClient(tokenUser);
        var taskInicio = Task.Run(async () => await dropbox.Users.GetCurrentAccountAsync());
        //throw new Exception("Arriving?");   //ARRIVES
        taskInicio.Wait();
        throw new Exception("Arriving?");    //Throws "one or more errors"
    }
    catch (AggregateException ex)
    when (ex.InnerException is BadInputException
          || ex.InnerException is AuthException)
    {
        throw new Exception("Incorrect Token or without access", ex.InnerException);
    }
}

在 VBA 上

Option Compare Database

Private Sub btActivar_Click()
    Call test
End Sub

Public Function test()

    Dim objDrop As CloudFiles.DropBox
    Set objDrop = New CloudFiles.DropBox

    MsgBox (objDrop.HolaMundo)
    objDrop.Connect("TokenLongChicken")
    'objDrop.DeleteFile("https://www.dropbox.com/s...?dl=0")


End Function

“產生一個或多個錯誤”聽起來像是來自“mscorlib”左右......

有任何想法嗎? 這變得非常混亂:/

謝謝。

VBA 確實有Application.Wait ,我想你可以試一試。 我有一個等待 IE 連接的代碼,您可以將其用作示例:

Do While IE.Busy ' Need to wait until the page has loaded
  Application.Wait (Now + TimeValue("00:00:01")) ' Wait one second
Loop

告訴我它是否對你有幫助。

我很頭疼,認為它可能與任務、異步、等待有關……而它與 Newtonsoft json 庫有關。

我通過 NuGet 將庫更新到 9.0 版本,並且在 Windows Forms 上一切正常,但是當我通過 .TLB 使用它時看起來有些問題,因為當我逃避異常時,我在刪除方法中的某個時候,它說缺少 Newtonsoft Json 7.0.0.0 庫(無論如何它都在同一目錄中)。

我終於刪除了我正在使用的 Newtonsoft Json 版本和 Dropbox API,再次下載了框,但我拒絕應用任何更新。 我什至無法嘗試申請降級左右。

好的結局,但我真的不明白為什么當我在我的 Windows 窗體項目中使用 9.x 時它搜索 7.0.0.0,它可以工作並導出 .DLL 和 .TLB。

感謝大家。

編輯:是的,我想這回答了這個問題:VBA 支持 Task.Wait(至少來自 C# .dll 導入)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM