Действительно ли программирование знания необходимо для пользовательского разработчика опыта?

Фоновые службы запускаются при запуске приложения, а затем вам нужно синхронизироваться с ним.

Вы можете реализовать backhround сервис, используя класс BackgroundService из пространства имен Microsoft.Extensions.Hosting (Microsoft.Extensions.Hosting.Abstractions сборка):

Сначала объявляйте интерфейс вашего сервиса (в этом случае он пуст). Не красиво, но чисто):

public interface IMyService : IHostedService
{
}

Затем объявите свой сервис. Следующий фрагмент объявляет службу, которая запускается при запуске в течение 5 секунд, а затем выполняет задачу каждые две с половиной минуты:

internal sealed class MyService : BackgroundService, IMyService
{
    private const int InitialDelay = 5 * 1000;  //5 seconds;
    private const int Delay = (5 * 60 * 1000) / 2; // 2.5 minutes

    private readonly ILogger<MyService> m_Logger;

    public MyService(ILogger<MyService> logger, IServiceProvider serviceProvider)
    {
        if (logger == null)
            throw new ArgumentNullException(nameof(logger));
        if (serviceProvider == null)
            throw new ArgumentNullException(nameof(serviceProvider));

        this.m_Logger = logger;
        this.m_ServiceProvider = serviceProvider;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        try
        {
            m_Logger.LogDebug($"MyService is starting.");

            stoppingToken.Register(() => m_Logger.LogDebug($"MyService background task is stopping because cancelled."));

            if (!stoppingToken.IsCancellationRequested)
            {
                m_Logger.LogDebug($"MyService is waiting to be scheduled.");
                await Task.Delay(InitialDelay, stoppingToken);
            }

            m_Logger.LogDebug($"MyService is working.");

            while (!stoppingToken.IsCancellationRequested)
            {
                await DoSomethingAsync();

                await Task.Delay(Delay);
            }

            m_Logger.LogDebug($"MyService background task is stopping.");
        }
        catch (Exception ex)
        {
            m_Logger.LogDebug("MyService encountered a fatal error while w task is stopping: {Exception}.", ex.ToString());
        }
    }

    private async Task DoSomrthingAsync()
    {
         // do something here
         await Task.Delay(1000);
    }

}

Как видите, вы должны поддерживать фоновую службу «живой» ». Наконец, вы должны зарегистрировать его в своем Startup.cs в конце вашего метода ConfigureServices:

services.AddSingleton<Microsoft.Extensions.Hosting.IHostedService, MyService>();

Этого достаточно для запуска службы. имейте в виду, что ваше приложение может быть действительно запущено позднее, если оно размещено в IIS: ваше приложение (пере) запускается каждый раз, когда ваша сборка перерабатывается. Вместо этого, используя Kestrel, предоставляет единственное приложение, которое не будет переработано.

Для тех, кто использует .Net Core 2.1 или ниже, класс Background недоступен, но вы можете получить определение от github (я публикую то, что я использовал в прошлом, так как репозиторий github можно перемещать):

[ 113]
6
задан Anirudh 28 January 2009 в 05:53
поделиться

9 ответов

Так, мой вопрос - это - как важный делают Вы думаете, программирует знание для дизайна пользовательского интерфейса?

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

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

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

как Вы идете об обучении, кто-то с абсолютно никаким программированием испытывает графические платформы на различных платформах?

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

3
ответ дан 8 December 2019 в 03:28
поделиться

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

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

С правильно совместным штатом разработки разработчику UI было бы нужно очень мало (если таковые имеются) знание об определенных используемых инструментах GUI.

Я был на стороне разработчика этого, где меня просили сделать что-то невозможное или непрактичное. Я всегда работал с разработчиками для нахождения счастливой середины, которая удовлетворила целям дизайна. Иногда то, что я думал, было невозможно, было на самом деле возможно. Иногда мы должны были сделать вещи другой путь. Несколько вещей должны были быть испуганы как "возможные, но слишком много усилия". (Такие как SWT основывал приложение, которое стало панелью задач Windows. Определенно возможный, но непрактичный для рассматриваемого проекта, поскольку это потребовало бы собственного кода.)

То, что является самым важным, - то, что обе стороны понимают, что они находятся в той же команде.

9
ответ дан 8 December 2019 в 03:28
поделиться

Его очень важное..

Не знание о:

  1. технология в целом
  2. технология Вы приняли решение выделить свое время, вложив капитал в произвести конечный продукт

Приведет к полной пустой трате времени для всех..

Даже конечный пользователь должен узнать немного о технологии, используемой в способном для использования безотносительно продукта, который мы делаем.. Кто-то, кто водит автомобиль, должен будет всегда знать, как заполнить газ и знать основы того, что автомобиль и что он может сделать, работы программного обеспечения подобным способом.

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

Способ сделать их больше знающее о технологии:

  1. Покажите ему аналогичные продукты тем, необходимо делать
  2. Покажите ему одинокие реализации стандартных блоков, которых Вы могли бы рассмотреть использование

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

4
ответ дан 8 December 2019 в 03:28
поделиться

Я думаю, что лучше учиться впереди, но если Ваш разработчик UI вынужден учиться на лету, удостоверьтесь, что каждый раз он отклонен, объяснено, почему что-то не может быть сделано, а не просто категорический отказ. Это помешает ему то, чтобы быть столь же разбитым, как он мог бы иначе быть то, потому что он сможет сформировать по крайней мере некоторую логическую платформу для того, что он может и не может сделать.

3
ответ дан 8 December 2019 в 03:28
поделиться

Я думаю, что разработчик должен знать о функциях и ограничениях, что инструменты, он использует предложение, и он должен знать об ограничениях и крайний срок текущего проекта, который делают те парни.

Он должен также знать о фоновой обработке, которую это продолжает показывать экрану UI, и все эти вещи прибудут, только если у него есть некоторое элементарное знание программирования.

Он не должен баловаться глубиной ООП, изучить SQL, знать запутанность отражения, или что-либо полагает как этот. Он просто должен знать свою платформу хорошо, и что я думаю, требование даже для разработчиков.

2
ответ дан 8 December 2019 в 03:28
поделиться

Не так важно как здравый смысл, по-моему.

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

Программирование знания, вероятно, не, но ограничения на выбранную платформу, конечно.

3
ответ дан 8 December 2019 в 03:28
поделиться

Очень базовый из "дизайна" должен найти способ достигнуть желаемого результата в рамках ограничений. Если Вы ничего не делаете о части ограничений, которая влияет на Вашу цель, то Вы не можете разработать.

2
ответ дан 8 December 2019 в 03:28
поделиться

Все это зависит от Ваших инструментов.

Править: То, что я имею в виду, существуют инструменты, которые разработаны для разработчиков и инструментов для программистов. Eclipse, для каждый не инструмент разработчика. Photoshop. Flash, возможно, Flex нет. Я не потребовал бы разработчика Flash к программе, но разработчик Flex действительно должен программировать.

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

2
ответ дан 8 December 2019 в 03:28
поделиться

Я уделил ему некоторое внимание и на основе ответов, данных ранее, я сделал определенные выводы:

Предварительное знание о том, что возможно и что является ограничениями, в то время как разработка на данной платформе обязательна. Это означает, что графический разработчик должен знать о следующем:

  • Инструкции по базовой конструкции по той платформе
  • Стандартный инструментарий UI / виджеты, обеспеченные на той платформе (для исключая: текстовые поля, выпадающие списки, и т.д.)
  • Что не возможно (или является слишком громоздким) на данной платформе (для исключая: создание полупрозрачных модальных диалоговых окон при постепенном исчезновении знаний в Eclipse)

Эта сумма знания не могла бы потребовать, чтобы разработчик баловался программированием.

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

1
ответ дан 8 December 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: