Как стать автором
Обновить
2
0.1

Пользователь

Отправить сообщение
Мб автор статьи подразумевал нечто вроде
using MyDictAlias = IDictionary<string, string>;

public void Method(MyDictAlias dict)
{
    dict.Add("","");
}

но в скоупе проекта\солюшена, а не только класса.
Говоря о касторовом масле, есть ли какая-либо информация об эффективности перорального приема по сравнению с наружным? Если наружное более эффективно, то, предполагаю, при себорейном дерматите оно противопоказано?
Можете также поделиться способом применения обоих (сколько раз в неделю)?

СЕО Replicel обмолвился, что анонс возможно будет к концу года. Но что до самого релиза, ходят разговоры, что он может быть аж в 22-23 годах из-за длительной третьей фазы клинических испытаний в Японии.
Нейтральным решением могла бы быть возможность прятать посты из ленты. Открыл, пролистал, выбрал посты которые «гуано, неинтересно, прочел-и-забыл» и дропнул. И вот лента уже не шесть страниц, а две.
Проглядел участок кода, где на Set в ExecutionContext-е происходит создание нового словаря с копированием содержимого. Ну а раз у нас одно из значений — long…
Используя [ThreadStatic] переменную для контекста, я получал полную кашу (в начале метода её инициализирую, а на после чтений из БД получаю значение от другого запроса).


С MSDN

Indicates that the value of a static field is unique for each thread.


Так что вполне ожидаемое поведение

ExecutionContext же не связан с конкретным потоком, а логически завязан на поток исполнения.

Специально для хранения пользовательских переменных и получения к ним доступа в static-контекстах есть словарик HttpContext.Current, чтобы не изобретать велосипеды.

Мир не одним Web-ом един. Для Presentation-слоя это может и сойдет, но вы же не будете тянуть System.Web в DAL или консольное приложение?
Пример кода:
public class CounterContext
{
    public long AsyncCounter;
}

static AsyncLocal<CounterContext> CounterContext = new AsyncLocal<CounterContext>();

static void Main(string[] args)
{
    CounterContext.Value = new CounterContext();
    Task[] tasks = Enumerable.Range(1, 1000).Select(i => Task.Factory.StartNew(() =>
    {
        CounterContext.Value.AsyncCounter++;
    })).ToArray();

    Task.WhenAll(tasks).GetAwaiter().GetResult();

    Console.WriteLine(CounterContext.Value.AsyncCounter);
}


Выведет 997-1000 из-за конкурентного доступа
It depends.

AsyncLocal-данные хранятся в словаре _localValues ExecutionContext-а. Т.к. при создании таски через StartNew происходит захват контекста, то «дочерний» контекст получает все данные «родительского». А так как автор использует обертку для данных в виде ErrorContext, то два ExecutionContext-а шарят референс на инстанс ErrorContext-а. Так что ConcurrentBag вполне уместен.

В вашем примере, значение остается нулевым, т.к. референс на parentEc._localValues != childEc._localValues, а значит, что при инкременте замена объекта в _localValues внутри созданной таски происходит только для childEc._localValues.

А вот почему ссылки словарей различаются я пока не понял. Словно производится копирование содержимого родительского _localValues в дочерний, хотя по коду ExecutionContext.Capture копирует лишь ссылку на словарь.
Что-то подсказывает, что такая инициализация контекста в фильтре может ударить по перфомансу при нагрузке.
Не лучше ли вынести этот код в какой-нибудь ErrorContextInitializationMiddleware и зарегистрировать на PreHandlerExecute стэйдж? Тогда синхронизации доступа к Current контексту не понадобится, а логирование вынести в кастомный IExceptionLogger (раз уж речь в статье идет о ASP.NET WebAPI)
Если вы про C&C Tiberium, который FPS, то его давно отменили.
Да и после Tiberium twilight веры в то, что EA выпустит что-то перевариваемое, уже нет.
На втором скриншоте можно заметить антигероя. Автор или забыл исправить, или специально оставил пасхалку
Аналогичная проблема, но не только со скайпом, а еще и с Edge. Помнится, когда его только завезли, удивился как быстро грузятся страницы и вкладки открываются моментально. Через неделю использования появились и задержки в открытии\закрытии вкладок, и загрузка и отзывчивость страниц сильно упала.
Потом с выходом мажорного обновления (вроде, когда завезли расширения) браузер снова забегал. Но бегал он всего пару дней, а потом, видимо, снова устал.
Похожее случается на моем стареньком Dell. Мне помогает включение\выключение режима полета.
Но это ничто, по сравнению с реакцией ноута на закрытие крышки при опции Do Nothing: экран гаснет и светит подсветкой, но обратно загораться отказывается. Помогает только усыпление.

Испытания разных образцов Samsung Galaxy S7 (32 GB) SM-G930F показали и разные результаты: один образец работал как и ранее сразу после извлечения из воды; в другом слегка приглушился звук, выходящий из микрофона. А вот у третьего образца перестала работать кнопка питания, под стекло фронтальной камеры затекла вода и вышел из строя тачскрин. После того как смартфон высох, проблемы не ушли. Вдобавок производительность устройства понизилась.

Информация

В рейтинге
3 428-й
Зарегистрирован
Активность