我想从异步任务返回一个字符串结果.
System.Threading.Tasks.Task.Run(async () => await audatex.UploadInvoice(assessment, fileName));
public async Task UploadInvoice(string assessment, string fileName)
{
//Do stuff
return string;
}
Run Code Online (Sandbox Code Playgroud)
异步编程困惑我,有人可以解释一下吗?
我正在为excel创建一个VSTO功能区AddIn,我在我的应用程序中存储了一些工作簿状态信息,用于更新可视按钮已启用.考虑到可以存在多个工作簿,我将此状态对象存储在ThisAddIn类的字典中.我的问题是我不知道如何获得工作簿的唯一Hash/Key/Guid,因为我得到的是一个不断更改哈希值的COM包装器.很公平,我完全理解.
我已经使用了很长时间的一个解决方案是创建一个guid并将其存储在工作簿的CustomDocumentProperties中,并将基于该状态的状态映射为关键字.这至少有效,但如果我创建工作簿的副本并在同一个Application实例中打开它并且现在有多个工作簿具有相同的guid,它就会失败.
我现在有一个想法,我想我可以在Workbook_Open事件上刷新这个Guid.但这仍然是一个狡猾的解决方案.
我在这里找到的第二个解决方案:http: //social.msdn.microsoft.com/Forums/en-US/vsto/thread/04efa74d-83bd-434d-ab07-36742fd8410e/
所以我使用那些人代码并创建了这个:
public static class WorkbookExtensions
{
public static IntPtr GetHashery(this msExcel.Workbook workbook)
{
IntPtr punk = IntPtr.Zero;
try
{
punk = Marshal.GetIUnknownForObject(workbook);
return punk;
}
finally
{
//Release to decrease ref count
Marshal.Release(punk);
}
}
}
Run Code Online (Sandbox Code Playgroud)
它运行得非常好几分钟,直到它开始给我一个臭名昭着的错误"COM对象已经与其底层RCW分离不能使用"访问Application.ActiveWorkbook.
这是一种引用Workbook COM对象的安全方法吗?如果我有两个功能区应用程序都使用此方法获取单个工作簿GUID怎么办?如果其中一个应用程序在我的状态对象上运行垃圾收集器,调用终结器来调用Marshal.FinalReleaseComObject(工作簿),该怎么办?有什么方法可以获得工作簿的Ref Count,这样我就不会在其他Ribbon Apps完成之前调用FinalRelease吗?在VSTO中清理Workbook COM对象以保持与其他应用程序公平竞争的最佳做法是什么?
当然,我不是第一个想要根据Workbook状态启用按钮的人,其他人如何做到这一点?我在Stack Overflow上看过其他几篇文章,但没有一篇能帮助我解决Workbook Guid解决方案.
我正在使用功能区设计器,并连接到工作簿加载和停用事件.
在此先感谢,希望我已经包括所有的细节.
我在使用基本的 Traefik 路由设置时遇到了麻烦。
我的目标是在端口 80 上使用两个 helloworld 应用程序(每个应用程序都不同以区分)获得基本路由,例如:
如果我单独运行它们,每个图像都可以正常工作docker run。
在我的项目目录中使用 Powershell /app,当我运行时,docker-compose up我得到以下信息:
Traefik 服务启动,我可以很好地访问仪表板,但路由表没有显示我的路线。demo1 和 demo2 启动得很好,但显然我无法连接到它们,因为路由不起作用。
即使所有服务都成功启动 -我反复收到以下错误:
traefik | ... "Failed to create a client for docker, error: protocol not available" providerName=docker
traefik | ... "Provider connection error protocol not available, retrying ..." providerName=docker
Run Code Online (Sandbox Code Playgroud)
我在下面包含了我的 docker-compose.yml 文件,这是我目录中唯一的文件/app.
docker-compose.yml:
# app/docker-compose.yml
version: '3.8'
networks:
myweb:
driver: nat
services:
proxy:
image: …Run Code Online (Sandbox Code Playgroud)