Использование асинхронного метода C # на C ++ - PullRequest
0 голосов
/ 30 октября 2018

Я создал проект библиотеки классов (.net framework) на C # и хочу использовать эту DLL в моем клиентском проекте C ++.

Я проверил на MSDN и в Интернете инструкции о том, как это сделать. Таким образом, я мог видеть результат кода C # на моем проекте C ++. кроме как на C # асинхронном методе.

Произошла ошибка времени выполнения.

Это часть моего кода C # dll.

namespace NethereumDLLTest
{
    [Guid("1C3D53B3-54C5-452B-9505-3F58ABEB35BA")]
    public interface INethereumDLL
    {
        void Run();
    }

    [Guid("C22875F1-B74D-4C99-B446-ED705CE86D3B")]
    public class Class1 : INethereumDLL
    {

        //there are some methods here.

        public void Run()
        {
            Console.WriteLine("NethereumDLLTEST");

            RunGeth();

            Task task = new Task(ActionMethod);
            task.Start();
            Console.WriteLine("Main Logic");

            GetAccountBalance().Wait();
            Console.ReadLine();
        }

        static async Task GetAccountBalance()
        {
            for (int i = 10; i > 0; i--)
            {
                Thread.Sleep(1000);
            }
            var web3 = new Web3("http://localhost:8545");
            var balance = await  web3.Eth.GetBalance.SendRequestAsync("0xb3a11b62596b8b6313dddc30e9b11607c8f9fb38");

            Console.WriteLine($"Balance in Wei: {balance.Value}");
            var etherAmount = Web3.Convert.FromWei(balance.Value);
            Console.WriteLine($"Balance in Ether: {etherAmount}");
        }
    }
}

и вот коды клиента cpp.

#import "C:\Users\june\source\repos\NethereumDLLTest\NethereumDLLTest\bin\Debug\NethereumDLLTest.tlb" 

using namespace std;
using namespace NethereumDLLTest;

int main()
{

    CoInitialize(NULL);

    {
        INethereumDLLPtr ptr(__uuidof(Class1));
        ptr->Run();
    }
    CoUninitialize();

}

Я мог бы найти все сообщения журнала выше функции "GetAccountBalance", но похоже, что после этого она не была выполнена.

Не можете использовать асинхронные функции C # в c ++? или я что-то не так?

Изображение захвата во время выполнения

...