BIM-Блог

Как написать асинхронный запрос в Revit-API

/// <summary>
/// It helps to perform asynchronous actions in revit, because Async does not work in revit
/// </summary>
public static class AsyncTasksExecutor
{
    public static T Execute<T>(Func<Task<T>> action)
    {
        var task = Task.Run(action.Invoke);
        return task.GetAwaiter().GetResult();
    }
    public static T Execute<T>(Func<ValueTask<T>> action)
    {
        var task = Task.Run(async() => await action());
        return task.GetAwaiter().GetResult();
    }
}
public void ShowHowExtensionWorks()
    {
        object yourObject = new object();

        bool result = AsyncTasksExecutor.Execute(() => DoAsyncWorks(yourObject));
    }

    public async Task<bool> DoAsyncWorks(object someObjectsYouCanUse)
    {
        await Task.Delay(1000);//Simulate async operation
        return true;
    }