Блог программиста
21 добавил: 5/14/2012 3:35:30 PM

Click Once дистрибуция приложения без использования VS
Постоянно забываю, вот и решил добавить ссылки себе в блог.
Иногда возникают такие ситуации, что при создании дистрибутива VS сама повторно компилирует exe файл. Точнее сказать она всегда компилирует перед тем как создать дистрибутив, а иногда это не нужно. Что же делать, есть ли выход?
Можно создать дистрибутив вручную с помощью Mage.exe или MageUI.exe
http://msdn.microsoft.com/en-us/library/xc3tc5xx.aspx 

А как вас зовут?

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

22 добавил: 11/25/2012 10:40:53 PM

Нашел замечательную возможность создавать глобальные переменные и функции в WinRT приложениях.


Для этого в класс App нужно добавить:


public static new App Current
{
get { return Application.Current as App; }
}


и далее можно создать глобальную функцию или переменную:

  public static void globalfunc()
{

...
BlankPage pag = new BlankPage();

var fram = Window.Current.Content;
var fram2 = fram as frame;
pag = (BlankPage)fram2.Content;

...   

}


И вызывать ее из любого места кода:

App.globalfunc();

А как вас зовут?

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

23

Очень грустно мне было, когда я узнал, что в WinRT на C# нет FlyOut. Каким-то образом реализовал я ентот флайаут у себя в программе и сломал себе мозг пытаясь понять как же оно работает. А все-то оказалось просто. И сказать, что нет в WinRT на C# FlyOut совсем нельзя. Он довольно просто реализуется. :)

Сперва нужно создать UserControl, внутрь которого разместить Popup.

А как вас зовут?

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

24 добавил: 10/21/2013 11:08:22 AM

12/25/2012 11:58:36 AM
А как вас зовут?

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

25 добавил: 3/24/2013 5:02:37 PM отредактировал: 4/2/2013 11:33:57 AM

Вкратце немного полезной информации о C# ( примеры не мои, но очень полезные - mustknow )
Асинхронность

  Task<string> task = new WebClient().DownloadStringTaskAsync("http://microsoft.com/");
  task.Wait(); // Здесь мы ждем завершения задачи, что блокирует поток
  TextBox.Text = task.Result;

Этот пример работает синхронно

try
   {
     TextBox.Text = await new WebClient().DownloadStringTaskAsync("http://not-habrahabr.ru/");
   }
   catch (Exception ex)
   {
     MessageBox.Show(ex.Message);
   }

…… // далее идет код, которые выполняется параллельно
Этот пример замечательно «ловит» исключение в асинхронном потоке идущем в основной функции

private void StartButtonClick(object sender, RoutedEventArgs e)
{
   try
   {     
     Download();     
   }
   catch (Exception ex)
   {
     MessageBox.Show(ex.Message);
   }
}
private async void Download()
{
   TextBox.Text = await new WebClient().DownloadStringTaskAsync("http://not-habrahabr.ru/");
}

А вот этот пример не «словит» исключение в методе Download(), так как сразу после вызова функции код продолжает выполняться.

Асинхронность позволяет производить параллельную обработку в одном потоке, следовательно асинхронный код не будет использовать все ядра вашего процессора - это минус.

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

ЗАМЫКАНИЯ ( closures )


var funcs = new List<Func>();
for (int i = 0; i < 3; i++)
{
    funcs.Add(() => i);
}
foreach (var f in funcs)
    Console.WriteLine(f());

Выведет на экран 3 3 3 а не 1 2 3 как ожидается…
Данный результат обусловлен двумя причинами: (1) при замыканиях осуществляется захват переменных, а не значений переменных и (2) в приведенном фрагменте кода, существует один экземпляр переменной i, который изменяется на каждой итерации цикла, а не создается новый экземпляр на каждой итерации.

Исправить данную ситуацию довольно просто:
var funcs = new List<Func>();
for (int i = 0; i < 3; ++i)
{
    int tmp = i;
    funcs.Add(() => tmp);
}
foreach (var f in funcs)
    Console.WriteLine(f());


Внутренние функции ссылающиеся на локальные переменные своих внешних функций также создают замыкания. Пример на JavaScript:
function add (x) {
return function (y) {
return x + y;
};
}
var add5 = add(5);
var no8 = add5(3);
alert(no8); // Возвращает 8

Когда
А как вас зовут?

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

«  1 2 3 4 5 6 7  ...  » 

На сайт AlexAlex.ru