Скоро эта операционная система, окончательно устранившая бренд Windows Mobile, придет в нашу жизнь, а как именно и когда, сколько и зачем, можно будет узнать из блога который я открыл — Windows Phone 7 Series
Microsoft
Создание плейера Silverlight, без программирования
Никто лучше, чем коллеги из Microsoft об этом не расскажут:
Читать далее →
Проблема с SQL Server 2008
Если при попытке открытия файла базы данный SQL Server`а *.mdf в Visual Studio , случилась ошибка:
Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance. The connection will be closed.
То не паникуйте, решение очень простое, всего необходимо сделать три вещи:
1. Удалить папку C:\Users\[username]\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS;
2. Перезапустить компьютер или SQL Server;
3. В ConnectionString указать User Instance = False.
И вуа ля все работает как нужно.
Управление потоками в Windows
Основой из основ распределенных вычислений я считаю потоки приложений. На базе них можно реализовать распределенный вычисления на локальной машине, как с общей памятью(если функция потока будет изменять глобальную для приложения область памяти ), так и с разделенной (если функция потока будет работать с собственными локальными переменными/памятью).
В работе с потоками в Windows задействовано, две основные функции:
- Первая – это функция из API отвечающая за создание потока – CreateThread();
- Вторая- функция самого потока, которая задается пользователем – ThreadProc().
Не буду многословен, вот пример:
#include <windows.h> #include <stdio.h> void *mainThread; DWORD * id; // Наша ThreadProc DWORD WINAPI treadFunction(LPVOID lpParameter) { DWORD exitCode; while (GetExitCodeThread(mainThread,&exitCode) && exitCode == STILL_ACTIVE) { // пока не выйдем из программы // что-то делаем в отдельном потоке printf("----------------- Hello from sub thread\r\n"); Sleep(5000); // сделаем паузу чтобы вывод не превратился в "мясо на экране" } return 0; } int main() { mainThread = GetCurrentThread(); // достаем ссылку на поток текущего приложения CreateThread(NULL,0,treadFunction,NULL,0,id); // создаем новый поток while(true) { // программа тоже делает что-то свое printf("Hello from main thread\r\n"); Sleep(1000); // аналагично комментарию к Sleep выше } return 0; // выходим из программы }
Данный пример будет выводить в консольное окно каждые 5 секунд «—————– Hello from sub thread» из созданного потока и «Hello from main thread» каждую секунду. Что подтверждает одновременную работу функции потока, и основного потока программы.
P.S. Сегодня сменил дизайн блога, со стандартного на Cleanr, сам за создание дизайна не взялся, потому что давно этого уже не делал, да и как-то не охота.
Создаем MP3-плеер на Microsoft Silverlight Три
Продолжаю работу над изучением технологии Silverlight, тем более, что сегодня узнал две новости:
- заглянув на Microsoft Dreamspark увидел, что появилась Microsoft Expression Studio 3;
- вышла бесплатная книга переведенная на русский язык Лоуренса Морони «Введение в Microsoft Silverlight 3″;
- Для тех кто жаждет больше новостей: http://www.microsoft.com/rus/news/issues/2009/09/silverlight.mspx.
Сегодня я напишу о основном элементе любого media-приложения на Silverlight – <MediaElement>, оказалось, что есть некотрый подвох в его использовании.
Самый простой вариант кода элемента MediaElement:
<MediaElement Name="MP3Elem" Source="[Адрес]" AutoPlay="[True|False]"/>Адрес – адрес к файлу на локальном компьютере, либо расположенном на удаленном сервере (поддерживаются HTTP и HTTPs протоколы). Про форматы и прочее рекомендую прочитать все в книге.
И тут все бы хорошо, но я столкнулся с неожиданным подвохом. ! Сначала я создал silverlight-приложение без Web-хоста (просто при Buildе создавался файлик TestPage.html, который я открывал в браузере и смотрел в результат ). Так вот, получилось так, что если наше творение не на хосте, при попытки открытия удаленного медиа-файла по HTTP возникает ошибка AG_E_NETWORK_ERROR, но как только я разместил его на веб-сервере и обратился к нему по http://localhost/…, чудесным образом все заработало.
Работающий пример кода элемента:
<MediaElement Name="MP3Elem" Source="http://nezname.com/music/piano_podcast_11.mp3" AutoPlay="True"/>Будет воспроизводить вам Piano podcast #11 «Искры».
Продолжение следует

