• Какие плюсы и минусы у Task и Thread?

    @Untiwe Автор вопроса
    Developer, Хороший аргумент, спасибо)
  • Какие плюсы и минусы у Task и Thread?

    @Untiwe Автор вопроса
    Developer, это хорошо, но я так и не понял, что, для каких целей подходит лучше и почему?
  • Какие плюсы и минусы у Task и Thread?

    @Untiwe Автор вопроса
    а Task хуже подходит для (допустим) больших вычислений потому что... почему? ему никогда не выделается ресурсов больше какой то границы, а Thread может использовать хоть все? или это какое то странное правило хорошего тона? или почему еще?
  • Какие плюсы и минусы у Task и Thread?

    @Untiwe Автор вопроса
    the promise of a result in the future

    Это напоминает мне coroutines из python или promise из javascript где задачи выполняются из одного потока, просто он между ними переключается "под капотом" А это уже не отельные потоки как в Thread.

    In general, I'd recommend that you use the higher level abstraction wherever you can: in modern C# code you should rarely need to explicitly start your own thread.

    Это примерно то, что я сегодня сказал Task лучше Thread и на меня посмотрели как на идиота. Видимо или люди в компании чего то не понимают, или сам Джон Скит)

    sharpcorner отвечает на мой вопрос
    Why we need Tasks

    It can be used whenever you want to execute something in parallel. Asynchronous implementation is easy in a task, using’ async’ and ‘await’ keywords.
    Why we need a Thread

    When the time comes when the application is required to perform few tasks at the same time.


    Но из этого ответа я так и не понял что и где лучше
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    Борис Животное, ааа... они больше делают что то универсальное, что может работать на компьютере и телефоне одновременно
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    Борис Животное, на сколько я понимаю, UWP это улучшенная замена WPF, как в 2006 WPF был улучшенной заменой WimForms. Только она работает на десятке и чуть-чуть на восьмёрке.
    Не уж то ее сделали хуже и менее удобной? Ведь для майков есть хороший пример в виде HTML + CSS (мне так кажется)
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    Борис Животное,
    На счет OnPropertyChanged(); это привычка, которая осталась у меня с python и его философии
    Explicit is better than implicit.


    На счет MvvmLight не надо каждый раз объявлять OnPropertyChanged? Выглядит очень интересно, обязательно почитаю про него.

    На счет StartRefrashDateTime и OnTimerTick
    Я не вижу установки интервала для DispatcherTimer, я догадываюсь что он срабатывает каждую мс не является ли это бессмысленной нагрузкой на компьютер?
    Подскажите, почему Task.Delay(1000); не останавливает поток?
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    Ого! Это действительно очень интересный ход!
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    Спасибо большое. К сожалению я уже не у компьютера и могу посмотреть только поверхностоно но обязательно все исправлю как будет возможность.
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    В классе MainWindow есть событие OpenBigWindow которое срабатывает при нажатии на кнопку открытия большого экрана.

    Стиль должен менять цвет у цифр на этом экране, сейчас он стоит белый. Привязка данных идет через WindowsStyles и его объект BigWindowColors в классе View
    через который в свою очередь, идет привязка данных. Цвет читается из файла настроек app.config на данный момент, там есть цвет только для одного стиля.

    public partial class MainWindow : Window
        {
           BigWindow bigWindow = new BigWindow();
           SmallWindow smallWindow = new SmallWindow();
           public View _view = new View();
    
    public MainWindow()
    {
                //some code
                DataContext = _view;
                bigWindow.DataContext = DataContext;
                //some code


    В классе BigWindow есть метод SetStyles сейчас он включен, по этому ошибка будет сразу при запуске программы
    public partial class BigWindow : Window
        {
            
            public BigWindow()
            {
                InitializeComponent();
                SetStyles(); //пробуем поменать стили
            }


    Можете скачать проект и посмотреть https://github.com/untiwe/Monitor

    P.S. Я понимаю, что далеко не сеньор и если будут советы/адекватная критика я готов выслушать.
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    Борис Животное,
    В итоге сделал это через контекст данных. Теперь класс выглядит примерно так.
    <Style x:Key="NumbersStyle">
        <Setter Property="Control.Foreground" Value="{Binding Path=BigWindowColors.ColorNumbers, TargetNullValue=white}"/>
    </Style>


    Возможно это не самый оптимальный вариант и вы сможете предложить лучше. В любом случае, я очень благодарен за помощь. Можете оставить комментарий под вопросом и я отмечу его как решение.
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    Борис Животное,
    1. TargetType="TextBlock" почему то не работает, когда и почему это случилось, мне уже не интересно, замучался я с ним.
    2. Я могу поменять цвет через явно определенный стиль Style="{StaticResource DeleteNumbersStyle}" Только тут же знакомая ошибка 613e2b52b4cd3050003777.jpeg

    Как я понимаю, единственный выход, это создавать стиль программного и переназначать его каждому элементу. Более простого пути нет?
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    Изначально я сделал стиль, который применяется ко всем TextBlock благодаря параметру TargetType Стили пишутся в Window.Resources по этому я его туда заснул.
    <Window.Resources>
            <Style x:Key="BaseFontFamily">
             <!--  Базовый стиль с цветом-->
                <Setter Property="Control.Foreground" Value="#FF4500"/>
            </Style>
    
           <Style x:Key="NumbersStyle" TargetType="TextBlock" BasedOn="{StaticResource BaseFontFamily}">
                <Setter Property="Control.FontSize" Value="50"/>
                <Setter Property="Control.Background" Value="Transparent"/>
                <Setter Property="Control.HorizontalContentAlignment" Value="Center"/>
                <Setter Property="Control.VerticalContentAlignment" Value="Center"/>
                <Setter Property="Control.HorizontalAlignment" Value="Stretch"/>
                <Setter Property="Control.VerticalAlignment" Value="Stretch"/>
            </Style>
    
            <!--  Еще стили с наследованием BaseFontFamily-->
    
    </Window.Resources>


    Потом меня попросили, что бы пользователь мог менять цвет сам. Я стал искать способ программно менять Setter В гугле нашел похожий пример и адаптировал под свои нужды. Для этого у стиля появился x:Key="NumbersStyle" что бы его можно было найти в словаре ресурсов.

    И появился такой метод в классе BigWindow

    public void SetStyles()
            {
                Setter setter = new Setter(ForegroundProperty, Color.FromArgb(0, 0, 0, 0));
                Style = Resources["NumbersStyle"] as Style;
                Style.Setters.Add(setter);
            }
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    Борис Животное, да, ваши догадки верны.
    1. Если убрать TargetType ошибка будет уже другая.
    Стиль
    <Style x:Key="NumbersStyle" BasedOn="{StaticResource BaseFontFamily}">


    Ошибка
    613e0512d3375416014406.jpeg

    2. TargetType позволяет мне применять стиль ко всем TextBlock в окне и не прописывать его в ручную к каждому. По этому хотелось бы менять цвет у стиля, имеющим TargetType
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    Борис Животное, да, написал только в комментарии. В коде же исправил
    <Style x:Key="NumbersStyle" TargetType="TextBlock" BasedOn="{StaticResource BaseFontFamily}">


    Отладчик, как и вы, тоже говорит мне про разные типы. Похоже тут что то с решением в одну строку, но я понимаю что именно.

    public void SetStyles()
            {
                Setter setter = new Setter(ForegroundProperty, Color.FromArgb(0, 0, 0, 0));
                Style = Resources["NumbersStyle"] as Style;
                Style.Setters.Add(setter);
            }


    613deecf0159c355543591.jpeg
  • Почему при запросе объекта стиля, получается null?

    @Untiwe Автор вопроса
    Спасибо, а то я совсем не видел.

    Еще пришлось x:Name="NubmersStyle" поменять на x:Key="NubmersStyle" стиль наконец стало видно, но теперь он ругается System.InvalidOperationException: "TargetType "TextBlock" не соответствует типу элемента "BigWindow"." Наверно из-за параметра TargetType="TextBlock"

    P.S. действие происходит не в MainWinow а в дочернем окне BigWindow
    P.S.S На сколько я знаю в стиле C# писать CamelCase
  • Почему не обновляется привязанный контекст?

    @Untiwe Автор вопроса
    Foggy Finder, Понято, спасибо большое)
  • Почему не обновляется привязанный контекст?

    @Untiwe Автор вопроса
    Foggy Finder, Роман, спасибо, в целом заработало. Но есть несколько вещей, которые мне не понятны
    private short _TeamCounter;//счетчик очков команды
    public short TeamCounter { get => _TeamCounter; 
                set
                {
                    _TeamCounter = value;
                    OnPropertyChanged("TeamCounter");
                }
            }

    OnPropertyChanged("TeamCounter") равносильно OnPropertyChanged() но не работает если ввести случайные значения например OnPropertyChanged("123") Чем отличается наличие имени поля и его отсутствие?

    public event PropertyChangedEventHandler PropertyChanged;
            public void OnPropertyChanged( [CallerMemberName]  string prop = "")
            {
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs(prop));
            }


    Не понятная функция [CallerMemberName] т.к. при его удалении всё так же работает