C# - четыре Шаблона в Асинхронном выполнении

Для Запросов Sub

обозреватель объектов> щелкает правой кнопкой по таблице> таблица Script как> ВЫБОР к> Буфер обмена

Тогда, можно просто вставить в разделе, где Вы хотите это как запрос sub.

Шаблоны / Отрывки

Создают Вас собственные шаблоны только с фрагментом кода. Тогда вместо этого открытие шаблона как новый документ просто перетаскивает его Вам текущий запрос для вставки отрывка.

отрывок А может просто быть рядом заголовка с комментариями или просто некоторой простой частью кода.

Неявные транзакции

, Если Вы привычка не забываете запускать транзакцию перед Вашим удалять statemens, можно перейти к опциям и установить неявные транзакции по умолчанию во всех запросах. Они всегда требуют явной фиксации / откат.

Уровень изоляции

Переходит к опциям и установил уровень изоляции на READ_UNCOMMITED по умолчанию. Таким образом, Вы не должны вводить NOLOCK во всех своих специальных запросах. Просто не забывайте помещать подсказку таблицы при записи нового представления или хранимой процедуры.

база данных Default

Вашему входу в систему установил базу данных по умолчанию DBA (Мне, обычно нежелательный почти каждый раз).

, Если Вы хотите, чтобы он был различным из-за проекта, Вы в настоящее время продолжаете работать.

В 'Зарегистрированной области Servers'> Щелчок правой кнопкой> вкладка свойств Properties> Connection> соединяются с базой данных.

Несколько логинов

(Они Вы, возможно, уже сделали хотя)

Регистр сервер многократно, каждый с различным входом в систему. У Вас может тогда быть тот же сервер в обозревателе объектов, открытом многократно (каждый с различным входом в систему).

Для выполнения того же запроса Вы уже записали с различным входом в систему, вместо того, чтобы копировать запрос просто делают щелчок правой кнопкой по области запроса> Соединение> соединение Изменения.

41
задан Madacol 31 May 2019 в 14:13
поделиться

3 ответа

У вас есть шаблон опроса. В этом шаблоне вы постоянно спрашиваете: «Мы уже там?» Цикл while выполняет блокировку. Thread.Sleep предотвращает потребление процессами циклов ЦП.


Ждать завершения - это подход «Я позвоню тебе».

IAsyncResult ar = data.BeginInvoke(null, null);
//wait until processing is done with WaitOne
//you can do other actions before this if needed
ar.AsyncWaitHandle.WaitOne(); 
Console.WriteLine("..Climbing is completed...");

Итак, как только вызывается WaitOne , вы блокируетесь до тех пор, пока лазание не будет завершено. Вы можете выполнять другие задачи перед блокировкой.


С помощью Уведомления о завершении вы говорите: «Вы звоните мне, я не буду вам звонить».

IAsyncResult ar = data.BeginInvoke(Callback, null);

//Automatically gets called after climbing is complete because we specified this
//in the call to BeginInvoke
public static void Callback(IAsyncResult result) {
    Console.WriteLine("..Climbing is completed...");
}

Здесь нет блокировки, потому что Обратный вызов будет уведомлен.


А огонь и забыть было бы

data.BeginInvoke(null, null);
//don't care about result

Здесь также нет блокировки, потому что вам все равно, когда лазание закончится. Как следует из названия, вы забываете об этом.

94
ответ дан 27 November 2019 в 00:21
поделиться
while (!ar.IsCompleted)
{
    Console.WriteLine("...Climbing yet to be completed.....");
    Thread.Sleep(200);
}

Это классический опрос. - Проверь, спи, проверь еще раз,

4
ответ дан 27 November 2019 в 00:21
поделиться

Этот код - опрос:

while (!ar.IsCompleted)

Это ключ, вы продолжаете проверять, завершен он или нет.

Этот код на самом деле не поддерживает все четыре, но некоторый код поддерживает.

Process fileProcess = new Process();
// Fill the start info
bool started = fileProcess.Start();

Метод «Пуск» является асинхронным. Он порождает новый процесс.

Мы могли бы сделать каждый из способов, которые вы запрашиваете с помощью этого кода:

// Fire and forget
// We don't do anything, because we've started the process, and we don't care about it

// Completion Notification
fileProcess.Exited += new EventHandler(fileProcess_Exited);

// Polling
while (fileProcess.HasExited)
{

}

// Wait for completion
fileProcess.WaitForExit();
1
ответ дан 27 November 2019 в 00:21
поделиться
Другие вопросы по тегам:

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