Re: [OFF] А какие возможности-то открываются :)
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.01.17 04:16
Оценка: 16 (1)
Здравствуйте, fddima, Вы писали:

F>Здравствуйте, fddima, Вы писали:


F>Собственно на основе этого можно poor-man's lock logger прикрутить (естественно для текущей сборки).

F>Хотя я как бы и знал о возможности делать подобные извраты — никогда не делал.

F>1. Прийдется добавить в файл проекта ручками — студия зачем-то заботливо нас от этого огораживает:

F>
F>    <Reference Include="mscorlib">
F>      <Aliases>global,mscorlib</Aliases>
F>    </Reference>
F>


F>2.

F>[c#]
F>extern alias mscorlib;
F>using System;

F>namespace System.Threading

F>{
F> static class Monitor
F> {
F> public static void Enter(object obj, ref bool locked)
F> {
F> Console.WriteLine("Enter");
F> mscorlib::System.Threading.Monitor.Enter(obj, ref locked);
F> }
F> public static void Exit(object obj)
F> {
F> mscorlib::System.Threading.Monitor.Exit(obj);
F> Console.WriteLine("Exit");
F> }
F> }
F>}
Да, именно так и предполагалось использовать, только не для логов, а для рантайм проверки возможности дедлоков. (и даже больше, доказывания отсутствия возможности таковых при очередном захвате).
Из-за нестабильности эффекта вместо lock-а пришлось перейти на using, и все было ничего, пока компилятор не разрешил внутрь using-а вставлять await-ы. Теперь пришлось доказывать еще что из using-а выходит именно тот поток, что входил.

F>PS: VS2015U3

Аналогично

F>UPD: Ну вариант с "happy debug" предложенный практически изначально — я промолчу.

В заглавном сообщении меня интересовал именно факт вызова моих методов из под штатного lock-а. Понятно что без mscorlib или своего аналога это злая засада.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.