Выражение await не блокирует поток, в котором оно выполняется. Вместо этого оно указывает компилятору объявить оставшуюся часть асинхронного метода как продолжение ожидаемой задачи. Управление затем возвращается методу, вызвавшему асинхронный метод. Когда задача завершается, она вызывает свое продолжение и возобновляет выполнение асинхронного метода с того места, где она была прервана.
// без ожидания
Console.WriteLine(DateTime.Now);
Task.Run(() => { Thread.Sleep(5000); });
// этот код будет выполнен сразу
Console.WriteLine(DateTime.Now);
// ожидание с await
Console.WriteLine(DateTime.Now);
await Task.Run(() => { Thread.Sleep(5000); });
// этот код будет выполнен, только после завершения выполнения задачи
// текущий (вызывающий) поток не будет приостановлен
// (например, в Windows Form это будет хорошо видно)
Console.WriteLine(DateTime.Now);
Console.WriteLine(DateTime.Now);
var t = Task.Run(() => { Thread.Sleep(5000); });
t.Wait(); // ожидание выполнения задачи
// этот код будет выполнен, только после завершения выполнения задачи
// текущий (вызывающий) поток будет блокирован
// (например, в Windows Form это будет хорошо видно)
Console.WriteLine(DateTime.Now);
<script src="i18n/datepicker-ru.js"></script>
$('#datepicker').datepicker($.datepicker.regional[ 'ru' ]);
$('#datepicker').datepicker({ firstDay: 1 });
// или
$('#datepicker').datepicker('option', 'firstDay', 1);
string answer;
string yes = "yes";
// из yes лучше сделать константу, чтобы в этом был смысл :)
// const string yes = "yes";
// либо массив - это позволит проверять разные варианты ответов
string[] yesVariants = { "yes", "y", "true", "да", "еще бы", "только об этом и мечтаю" };
// или можно использовать регулярные выражения
do
{
// любой код здесь
Console.WriteLine("Желаете повторить тест?(Yes/No) ");
answer = Console.ReadLine();
} while (answer.Equals(yes, StringComparison.OrdinalIgnoreCase));
// проверка по массиву ответов
// } while (yesVariants.Contains(answer, StringComparer.OrdinalIgnoreCase));
module.exports = {
resolve: {
alias: {
// имя синонима: путь
'style': path.join(__dirname, 'style.override.css'),
'любоеУдобноеИмяСинонима': path.join(__dirname, 'путь к модулю'),
'любоеУдобноеИмяСинонима2': 'илиТакЕслиВкорне',
}
}
}
import 'style';
import 'любоеУдобноеИмяСинонима';
require('любоеУдобноеИмяСинонима2');
var suffix = '.override';
module.exports = {
resolve: {
alias: {
'style': path.join(__dirname, 'style' + suffix + '.css'),
}
}
}
SET ANY_NAME="VALUE" && webpack -d --color
console.log('process.env', process.env);
console.log('ANY_NAME', process.env.ANY_NAME);
// необходимо обязательно указать иконку
// иначе уведомление не будет отображаться
// можно использовать иконку формы
notifyIcon1.Icon = this.Icon;
// показываем уведомление
notifyIcon1.ShowBalloonTip(
10000,
"Новый ответ",
"Поступил новый ответ на ваш вопрос на Toster.ru",
ToolTipIcon.Info
);
// или с текстом по умолчанию (см. BalloonTipTitle, BalloonTipText)
// notifyIcon1.ShowBalloonTip(10000);
Confirm("Да или Нет?").then((result) => {
if (result) {
console.log("Пользователь согласен на всё.");
}
else
{
console.log("Пользователь что-то подозревает.");
}
});
function Confirm(message) {
let p = new Promise((resolve, reject) => {
// тут код создания окна
// $.fancybox({
// modal: true,
// content: '<div>' + message + '</div>'
// });
// в обработчики кнопок нужно добавить вызов resolve
// true - если пользователь нажал Ok
// resolve(true);
// false - если пользователь нажал Отмена
// resolve(false);
});
return p;
}
function Confirm(message) {
return new Promise(function(resolve, reject) {
var buttons = $('<div class="buttons" />');
var btnOk = $('<button class="btn btn-default">Ok</button>');
var btnCancel = $('<button class="btn btn-default">Отмена</button>');
var content = $('<div />');
btnOk.click(function() {
resolve(true);
$.fancybox.close();
});
btnCancel.click(function() {
resolve(false);
$.fancybox.close();
});
content.append('<div class="message" />');
content.append('<hr />');
content.append(buttons);
$('.message', content).html(message);
buttons.append(btnOk);
buttons.append(' ');
buttons.append(btnCancel);
$.fancybox({
modal: true,
content: content
});
});
}
Confirm('Вы согласны с этим решением?').then(function(result) {
if (result) {
$('body').append("<h1>Отлично!</h1>");
}
else {
$('body').append("<h1>Очень жаль...</h1>");
}
});
var element = document.createElement('div');
element.id = 'test'; // уникальный идентификатор элемента
element.innerHTML = 'создан новый элемент';
document.body.appendChild(element);
// получаем по идентификатору добавленный элемент
document.getElementById('test').innerHTML = 'изменено содержимое созданного элемента';
console.log('path', path);
var path = document.createElement('path');
path.className = 'anyClass';
console.log('path', document.querySelector('.anyClass'));
var path = document.createElement('path');
path.id= 'path';
console.log('path', document.getElementById('path'));
console.log('path', document.getElementsByTagName('path'));
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
var data = [];
// получаем данные из таблицы в массив
$('tr', 'table>tbody').each(function(index, row) {
var cells = $('td', row);
var sum = 0;
var items = [];
for (var i = 0; i < cells.length; i++)
{
if (i == cells.length - 1)
{
cells[i].innerHTML = sum / 5;
items.push(sum / 5);
}
else
{
sum += parseInt(cells[i].innerHTML, 10);
items.push(parseInt(cells[i].innerHTML, 10));
}
}
data.push(items);
});
// сортируем массив
data.sort(function (a, b) {
return a[5] - b[5];
});
// создаем новую таблицу на основе массива
var html = '<table><thead><tr>';
html += '<th>price</th><th>price</th><th>price</th>';
html += '<th>price</th><th>price</th><th>avrg</th></tr></thead>';
html += '<tbody>';
for (var i = 0; i < data.length; i++)
{
html += '<tr>';
for (var j = 0; j < data[i].length; j++)
{
html += '<td>' + data[i][j] + '</td>';
}
html += '</tr>';
}
html += '</tbody></table>';
// выводим таблицу (перезаписываем старую)
$('#content').html(html);
http://localhost:11733/meropriyatia
http://localhost:11733/meropriyatiavnikolaeve
routes.MapRoute(
"meropriyatiavnikolaeve", // имя
"meropriyatiavnikolaeve", // шаблон
new { controller = "Home", action = "meropriyatiavnikolaeve" }
);