Код C#: NewAsyncTaskRunner.cs
Код: Выделить всё
using System;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
namespace NewAsyncCallbackTest
{
[ComVisible(true)]
[Guid("dd9e3e74-f630-4ecc-8b09-e45512da443c")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface INewCallback
{
void OnTaskCompleted(string result);
}
[ComVisible(true)]
[Guid("22222222-2222-2222-2222-222222222222")]
[ClassInterface(ClassInterfaceType.None)]
public class NewAsyncTaskRunner
{
public void RunAsyncTask(string input, INewCallback callback)
{
Task.Run(async () =>
{
await Task.Delay(5000); // 5 seconds delay
string result = $"Task completed with input: {input}";
callback.OnTaskCompleted(result);
});
}
}
}
Код: Выделить всё
using System.Runtime.InteropServices;
[assembly: ComVisible(true)]
Код: Выделить всё
net48
10.0
true
MyKeyFile.snk
Код: Выделить всё
& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe" "C:\Path\To\Your\DLL\NewAsyncCallbackLibrary.dll" /codebase /tlb
Интерфейс: найден GUID dd9e3e74-f630-4ecc-8b09-e45512da443c в разделе HKEY_CLASSES_ROOT\Interface, но отображаются только номера и версия , а не INewCallback.
Класс: найден GUID 22222222-2222-2222-2222-222222222222 в разделе HKEY_CLASSES_ROOT\CLSID с правильным именем NewAsyncTaskRunner.
Проблема: класс NewAsyncTaskRunner распознается в VBA, но интерфейс INewCallback — нет. Интерфейс отображается в реестре без своего имени.
Мы будем очень признательны за любые идеи или предложения о том, что может быть не так с регистрацией интерфейса и как это исправить. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/792 ... e-class-is
Мобильная версия