【发布时间】:2017-07-02 18:51:41
【问题描述】:
我编写了一个连接到 Dropbox 的 C# 类,可以让你上传、下载、删除和生成链接文件。
它与 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 核心功能的最后一次更新发生在 2003 年。这些功能极不可能被添加到语言中。
-
@Steve - 这是 MS 在 2003 年构建的 - msdn.microsoft.com/en-us/library/aa213656(office.11).aspx
-
你能改变连接方法返回一个布尔值,然后在 VBA 中执行 until = true,如果一旦任务完成从 C# 中返回 true?
-
“一个或多个错误产生”是一个 AggregateException。所以这并没有像你预期的那样出错,这是抛出的任务。并且 InnerException 与 when 子句不匹配,它永远不会匹配,因为它使用 InnerExceptions 属性。注意 s。考虑 Flatten() 并重新抛出 InnerExceptions[0]。
标签: c# ms-access vba dropbox-api