[]
        
(Showing Draft Content)

GrapeCity.Documents.Excel.AsyncCustomFunction.EvaluateAsync

EvaluateAsync Method

EvaluateAsync(object[], ICalcContext)

Calculates the function asynchronously.

Declaration
protected abstract Task<object> EvaluateAsync(object[] arguments, ICalcContext context)
Protected MustOverride Function EvaluateAsync(arguments As Object(), context As ICalcContext) As Task(Of Object)
Parameters
Type Name Description
object[] arguments

The value collection of the arguments

ICalcContext context

The context of the calculation.

Returns
Type Description
Task<object>

The result of the function.

Examples
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.ActiveSheet;
AsyncCustomFunction function = new AsyncAddAsyncFunction();
Workbook.AddCustomFunction(function, true);
worksheet.Range["A1"].Formula = "=ASYNCADD_ASYNC(10,20)";
workbook.Calculate();
workbook.WaitForCalculationToFinish();
object finalValue = worksheet.Range["A1"].Value;

class AsyncAddAsyncFunction : AsyncCustomFunction
{
    public AsyncAddAsyncFunction()
        : base("ASYNCADD_ASYNC", "Adds two numbers asynchronously.", FunctionValueType.Number, new Parameter[] {
            new Parameter(FunctionValueType.Number),
            new Parameter(FunctionValueType.Number)
        })
    {
    }

    protected override Task<object> EvaluateAsync(object[] arguments, ICalcContext context)
    {
        return Task.Run<object>(async () =>
        {
            await Task.Delay(50);
            double left = Convert.ToDouble(arguments[0]);
            double right = Convert.ToDouble(arguments[1]);
            return left + right;
        });
    }
}