В настоящее время у меня есть рабочий проект, в котором я потребляю компонент C# winrt в приложении консоли Win32, используя Winrt без регистрации. Все работает хорошо, но проблема возникает, когда я пытаюсь использовать асинхронные методы из компонента C#. Поскольку задача не является типами WinRT, я искал, чтобы найти решение. Итак, как правильный способ вызовать асинхронные методы из компонента C# winrt? Полем Я также включил «winrt/windows.foundation.h». Это построит, но ошибки во время выполнения с пугающим (IMO) классом не зарегистрировано . Это также с 2014 года. < /P>
c# Компонент Winrt: < /p>
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Windows.Foundation;
namespace MyComp
{
public sealed class MyLib
{
public static string OtherMethods() // only working method
{
return "string";
}
// Below methods results with `Class not registered` error
public static IAsyncOperation TestAsync() // I think this is the problem
{
return TestAsyncHelper().AsAsyncOperation();
}
private static async Task TestAsyncHelper()
{
// do stuff here
return "string";
}
// ******* Update ****
public static IDictionary GetMapOfNames()
{
Dictionary retval = new Dictionary();
retval.Add(1, "one");
retval.Add(2, "two");
retval.Add(3, "three");
retval.Add(42, "forty-two");
retval.Add(100, "one hundred");
return retval;
}
}
}
< /code>
обновление < /h2>
Я заметил, что это происходит с каждым типом WinRT, который не примитивен. Я пытаюсь реализовать илист
или Idictionary , и ни один из них также не работает. Я нашел «передача управляемых типов во время выполнения Windows, что приводит к« возврату управляемых типов из вашего компонента », но каждая попытка, которую я пробовал, привела к тому, что класс не зарегистрировался ошибка. В связанных статьях упоминается, что при передаче типов .NET в компонент WINRT он появится как соответствующий тип WinRT с другой стороны, что звучит так, как будто он должен просто работать. Я также пытался использовать iMap , но ошибки с iMap недоступны из -за уровня защиты . Я обновил пример кода.
Подробнее здесь:
https://stackoverflow.com/questions/695 ... onent-to-c