private void AdHocCall(Action<QueryOptions, CancellationToken> makeCall, QueryOptions options)
{
var actualOptions = options ?? Settings.DefaultOptions;
EnforceLimits(actualOptions);
var token = new CancellationTokenSource();
var task = Task.Run
(
(Action)(() =>
{
makeCall(actualOptions, token.Token);
}),
token.Token
);
try
{
var timeout = actualOptions.QueryLimits.MaximumTime;
if (!task.Wait(timeout))
{
token.Cancel();
task.Wait();
}
}
finally
{
task.Dispose();
}
}