Тэги

Silverlight (36) WPF (10) IIS (7) Visual Studio (7) SharePoint (6) .Net Framework (5) ODP.NET (5) ASP.NET (4) C# (4) common (4) Network Settings (3) JavaScript (2) MS Office (2) Resharper (2) WCF (2) WEB (2) XPath (2) XSLT (2) ADO.NET (1) APEX (1) CMD (1) CSS (1) EF (1) HTML (1) Hardware bugs (1) Java (1) MS SQL (1) Oracle (1) PDF (1) Version Control (1) XAML (1)

среда, 19 января 2011 г.

WPF Tips: Не доверяйте ложной модальности MessageBox.Show - ее надо заслужить.

Если вы расчитываете на модальности MessageBox.Show, то должен заметить, что ее легко обойти, есил MessageBox.Show("текст") вызывается в момент, когда приложение не активно.
После этого вы можете закрыть окно приложения или выполнить на нем какие-либо действия, и MessageBox, как обычно, не помешает вам это сделать.

Это можно поправить, всегда передавая нужное вам окно в перегрузки метода MessageBox.Show, где первым параметром принимается объект класса Window.

Только учтите следующие замечания:

  1. Нельзя передать null в эти перегруженные методы.

  2. Если вам кажется неправильным тащить за собой целевое окно и вы захотите использовать Application.Current.MainWindow, то учтите, что там может быть null, если еще ни одного окна не открывалось или вы сами можете где-то в коде задать Application.Current.MainWindow = null;,
    а MessageBox.Show при этом порвет (выпадет на исключении)!
    Нужет будет утильный метод который проверяет Application.Current.MainWindow на null и вызывает перегрузку принимающую целевое окно или нет.

WPF/Silverlight Tips: Коварное статическое свойствоDispatcher.CurrentDispatcher - не используйте.

Не используйте свойство Dispatcher.CurrentDispatcher!!!
Или - используйте его по назначению, что фактически означает - "не используйте его никогда, чтоб не попасть в просак".

Вместо него нужно использовать
В WPF - Application.Current.Dispatcher.
В Silverlight - Deployment.Current.Dispatcher.

Дело в том, что Dispatcher.CurrentDispatcher вернет диспатчер для текущего потока или создаст новый для потока, в котором нет еще диспатчера.
Если вы работаете в потоке вашего UI, то все о.к., вы получите Dispatcher вашего UI-приложения.
Но если вы работаете во внешнем потоке, то вы получите диспатчер, который никак не связан с вашими UI элементами и окнами и вы никогда не достучитесь до ваших гуев.

Можно поймать неприятные баги, особенно при активном рефакторинге чужого кода.

Универсальное решение для всех фреймворков
SynchronizationContext.Current

среда, 12 января 2011 г.

ReSharper 5: Опять промашка.

Resharper 5 не умеет переименовывать алиасы неймспейсов в дерективе using.

Пример кода C#:

 using YYYY= XxxAaaBbbCcc;

в этом выражении ReSharper не сможет переименовать YYYY.

вторник, 11 января 2011 г.

Баг настройки сети - Основной шлюз подключения не задается, Интернетнедоступен.



Проблема: затруднено подключении к локальной сети и отсутствие доступ к интернет.

Признаки:

  1. На проблемной машине недоступен интернет, тогда как на других он есть.

  2. Основной шлюз подключения на машине не задается при включенном DHCP на роутере.

  3. Задание статических настроек для TCP/IP не помогает.

  4. Админка роутера не доступна или вместо нее отображается ваш корневой сайт на IIS (если задан).

Решение - перейдите на другую подсеть. Смотрите подробнее ниже.

Я опишу на моей конфигурации, вам станет понятно:
Windows XP SP3, IIS 5.1.
Роутер сидит на 192.168.10.1.
Подсеть 255.255.255.0.
Подключение к сети через Wi Fi удачно устанавливается, но значение для основного шлюза отсутствует. Вот загадка!
Задаю в ручную TCP/IP - не помогает (задал статический IP, подсеть, шлюз равный IP роутера).

Причина:
На машине у вас поднят IIS и когда-то (или может сейчас) на нем, для сайта по умолчанию, был задан IP-адрес, такой же как сейчас используется для роутера в локальной сети.

Решение:
Остановка IIS или сайта по умолчанию не помогут. Сносить IIS я не пробовал.
Если вы зададите роутеру другой IP-адрес, то все заработает, но доступ к админке роутера может не появится, если вы останетесь в той же подсети, поэтму я советую перейти на другую подсеть, например в место 192.168.10.1 для роутера задать 192.168.100.1.

Получается, если не хотите проблем с подключением в винде, то лучше взять в привычку избегать IP, которые "на слуху", такие как 192.168.1.1, например.

Тонкости раздачи интернета от мобильных операторов на несколькокомпьютеров.

После прошлого поста про Подключение к интернет через Wi-Fi Ad-Hoc столкнулся с жульничеством мобильных операторов связи, предлагающих мобильный интернет через флешку (мобильный брелок).

Биллайн! Ммм!!!

Ведь флешки для интернета поставляются с программой для удобства включения интерента. Эта программа также сделает так, чтобы ваши близкие не могли выйти в интернет с других компьютеров через ваш мобильный интернет.
Прога будет делать все, чтоб подключится к сети можно было только с ноута, в который воткнута флэха.
Она проконтролирует, если вы расшарили подключение для других компьютеров в вашей сети (Общий доступ к подключению к Интернету) и удалить его. Она просто заботливо удалить само подключение, когда ей удобно, и пересоздаст его с нуля.

Неспортивное поведение! Уверен, что остальные операторы сотовой связи делают так же.

Решения:

  1. Используйте, по возможности, 3G модем вашего мобильного телефона. Многие современные телефоны его имеют. Мобильный оператор должен помочь вас с подключением.

  2. Купите подобную 3G флешку не зараженную мобильным оператором. В этом случае вы должны уметь настроить подключение.

  3. Я могу выполнить и пункт 1 и 2, но мне реально лень, поэтому делайте как я дальше.

Как только интернет остался только там, где воткнут мобильный брелок, откройте свойства подключения, которое создалось после установки программы соединения с интернетом. В моем случае это "beeline" и включите повторно "общий доступ к подключение к интернету". Смотрите картинку ниже.

В моем случае это приходится делать после выхода ноута из сна или после запуска программы соединения с интернетом.

Настройка общего доступа к подключению к Интернету

Нажмите ОК.

Не обращайте внимание, если система вам скажет, что изменения применятся после запуска подключения в следующий раз!
Это неправда, интернет уже расшарен и им можно сразу пользоваться на других компьютерах в мобильной сети!!!