Как ожидать события в асинхронной задаче [в ожидании]

Загрузите MySQL-JDBC-Type-4-Treiber (ig 'mysql-connector-java-5.1.11-bin.jar' из 'mysql-connector-java-5.1.11.zip') в Mysql .

В процессе компиляции и выполнения в вашем пути к классам необходимо задействовать кувшин драйвера.

Class.forName( "com.mysql.jdbc.Driver" ); // do this in init
// edit the jdbc url 
Connection conn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", username, password );
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery( "select * from table" );

0
задан Fattum 27 June 2019 в 00:02
поделиться

1 ответ

Вам нужно создать TaskCompletionSource и зарегистрировать обработчик события, чтобы завершить его, а затем дождаться его Task.

var source = new TaskCompletionSource<(object, EventArgs)>();  //Change the EventArgs type to the actual event args type that the event passes.

EVENT_YOU_WISH_TO_WAIT_FOR += (s, e) => source.TrySetResult((s, e));

async void timeout()
{
    await Task.Delay(10000);  //10 secs
    source.TrySetException(new TaskCanceledException());
}

timeout();

try
{
    var (sender, @event) = await source.Task;

    //Statements here would be executed on the event is raised.
    //Do things with sender and @event provided.
}
catch (TaskCanceledException)
{
    //Handle timeout.
}
2
ответ дан Alsein 27 June 2019 в 00:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: