Информация об изменениях

Сообщение [OFF] А какие возможности-то открываются :) от 27.01.2017 21:31

Изменено 27.01.2017 21:31 Mystic Artifact

Re[2]: секунда WTF (lock)
Здравствуйте, fddima, Вы писали:

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

1. Прийдется добавить в файл проекта ручками — студия зачем-то заботливо нас от этого огораживает:
    <Reference Include="mscorlib">
      <Aliases>global,mscorlib</Aliases>
    </Reference>


2.
extern alias mscorlib;
using System;

namespace System.Threading
{
    static class Monitor
    {
        public static void Enter(object obj, ref bool locked)
        {
            Console.WriteLine("Enter");
            mscorlib::System.Threading.Monitor.Enter(obj, ref locked);
        }
        public static void Exit(object obj)
        {
            mscorlib::System.Threading.Monitor.Exit(obj);
            Console.WriteLine("Exit");
        }
    }
}

namespace MonitorEnterTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var syncRoot = new object();
            lock (syncRoot)
            {

            }

            Console.WriteLine("Press any key!!!");
            Console.ReadKey();
        }
    }
}


PS: VS2015U3
Re[2]: секунда WTF (lock)
Здравствуйте, fddima, Вы писали:

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

1. Прийдется добавить в файл проекта ручками — студия зачем-то заботливо нас от этого огораживает:
    <Reference Include="mscorlib">
      <Aliases>global,mscorlib</Aliases>
    </Reference>


2.
extern alias mscorlib;
using System;

namespace System.Threading
{
    static class Monitor
    {
        public static void Enter(object obj, ref bool locked)
        {
            Console.WriteLine("Enter");
            mscorlib::System.Threading.Monitor.Enter(obj, ref locked);
        }
        public static void Exit(object obj)
        {
            mscorlib::System.Threading.Monitor.Exit(obj);
            Console.WriteLine("Exit");
        }
    }
}

namespace MonitorEnterTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var syncRoot = new object();
            lock (syncRoot)
            {

            }

            Console.WriteLine("Press any key!!!");
            Console.ReadKey();
        }
    }
}


PS: VS2015U3