Эти две функции работают, но моя проблема заключается в том, что анонимная функция (та, которая принимает ServiceCheck
как аргумент) никогда не вызывается.
Что мне нужно сделать, чтобы функция CheckServiceConnection
вернула строку так, чтобы анонимная функция запустилась?Как запустить анонимную функцию
internal async void CheckServiceConnection()
{
await _da.CheckServiceConnection((ServiceCheck) =>
{
GeneralEventArgs args = new GeneralEventArgs();
args.GeneralObject = (object)ServiceCheck;
ServiceConnection(this, args);
});
}
public Task<string> CheckServiceConnection(Action<string> OnComplited)
{
var tcs = new TaskCompletionSource<string>();
ws.CheckServiceCompleted += (s, e) =>
{
if (e.Error != null)
tcs.TrySetException(e.Error);
else if (e.Cancelled)
tcs.TrySetCanceled();
else if (e.Result != null)
tcs.TrySetResult(e.Result);
};
try
{
ws.CheckServiceAsync();
}
catch (Exception ex)
{
ws.LogAsync(ex.Message, "DataManager.CheckServiceConnection()");
}
return tcs.Task;
}
Когда я пишу CheckServiceConnection
функцию, как что - она работает (и, конечно, CheckServiceConnection
не принимает никаких аргументов):
internal async void CheckServiceConnection()
{
var ServiceCheck = await _da.CheckServiceConnection();
GeneralEventArgs args = new GeneralEventArgs();
args.GeneralObject = (object)ServiceCheck;
ServiceConnection(this, args);
}
Вы уверены, что круглые скобки правильны в вашем первом, где говорится: 'await _da.CheckServiceConnection ((ServiceCheck)'? – Slime
Да, ServiceCheck - это строка, возвращающая анонимную функцию при выполнении CheckServiceConnection. – user1731254