1. C# / Говнокод #12803

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    using (var twainManager = new DeviceManager())
    {
        twainManager.Open();
        using (var evn = new ManualResetEvent(false))
        {
            var device = twainManager.Devices[targetDevice.Index];
            device.UserInterfaceClosed += (sender, args) => { evn.Set(); };
            device.Setup();
            evn.WaitOne();
        }
        twainManager.Close();
    }

    Модальное открытие говноформы.

    Запостил: kovyl2404, 25 Марта 2013

    Комментарии (15) RSS

    • >using (var twainManager = new DeviceManager())
      > twainManager.Close();
      Перестраховался штоле?
      Ответить
      • А вдруг Close() не есть Dispose()?
        Ответить
        • А вдруг эксепшон?
          И будет Dispose без Close?
          Ответить
          • Тем более!
            Ответить
            • И я о том же: говно, как ни крути.
              Ответить
              • Так и есть. Dispose и Close в данном случае совершенно разные методы, и Close лишь закрывает менеджер, не освобождая его. Однако, реализация Dispose самостоятельно закроет менеджер (ну, например, если Close не отработает из-за эксепшона). Честно говоря, в самом освобождении ресурсов я ничего говеного не вижу. Если есть Open, должен быть Close даже если Dispose его умеет вызывать самостоятельно. Сок этого говнода, как по мне, в самом открытии формы.
                Ответить
          • finaly выполнится, даже если есть эксепшн же?
            Или это сарказм такой?
            Ответить
            • Какое finaly?
              Ответить
              • Из первого блока using получается.
                Ну я лично читал, что using транслируется в try-finaly.
                Ответить
                • using транслируется в try-finaly. Поэтому, при экзепшоне первый блок вызовет twainManager.Dispose() (который, в свою очередь, в данной реализации, вызовет Close, если он не был вызван ранее).
                  Ответить
                  • Ну я вот как раз таки об этом.
                    >>И будет Dispose без Close?
                    Это типа сарказм?

                    Просто может быть я чего не вижу.
                    Ответить
                    • Ну, в целом, да. Конкретно этот Close не вызовется, но менеджер все-равно закроется.
                      Ответить
    • Как это вообще может работать? Поток-то останавливается. А форма, что, в отдельном потоке выполняется?
      Ответить
      • Упс. Извини, я плюсануть хотел, но промахнулся. В том-то и дело, что оно тупо замораживается и нихрена не работает =)
        Ответить

    Добавить комментарий