[]
Calculates the function asynchronously.
protected abstract Task<object> EvaluateAsync(object[] arguments, ICalcContext context)
Protected MustOverride Function EvaluateAsync(arguments As Object(), context As ICalcContext) As Task(Of Object)
| Type | Name | Description |
|---|---|---|
| object[] | arguments | The value collection of the arguments |
| ICalcContext | context | The context of the calculation. |
| Type | Description |
|---|---|
| Task<object> | The result of the function. |
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;
});
}
}