Как насчет использования функции EARLIER
следующим образом:
Yesterday =
CALCULATE(
MAX('sample'[Price]),
FILTER(
'sample',
'sample'[DATE]<EARLIER('sample'[DATE])
)
)
Рискуя тем, чтобы заявить очевидное, если у Вас есть какой-либо фон C/C ++/Java, я думаю, что C# предлагает Вам самую низкую точку входа.
Принятие Вы используете Visual Studio 2008, можно выполнить эти шаги:
false
, чтобы препятствовать тому, чтобы события были записаны по умолчанию в журнал событий Приложения (Примечание: я не говорю, что Вы не должны регистрировать сервисные события; я просто предпочитаю писать в свой собственный журнал событий вместо Журнала приложения - видят ниже) true
, если Вы хотите обработать завершения работы системы true
Вы захотите переопределить метод OnShutdown также. Я создал пример ниже иллюстрирования использования этих функций. using System.Diagnostics;
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller()
{
InitializeComponent();
EventLogInstaller installer = FindInstaller(this.Installers);
if (installer != null)
{
installer.Log = "ServiceExample"; // enter your event log name here
}
}
private EventLogInstaller FindInstaller(InstallerCollection installers)
{
foreach (Installer installer in installers)
{
if (installer is EventLogInstaller)
{
return (EventLogInstaller)installer;
}
EventLogInstaller eventLogInstaller = FindInstaller(installer.Installers);
if (eventLogInstaller != null)
{
return eventLogInstaller;
}
}
return null;
}
}
На данном этапе можно разработать проект для получения исполняемого файла службы Windows. Для установки сервиса откройте командную строку Visual Studio 2008 года и перейдите к каталогу Debug или Release, где исполняемый файл. В командной строке введите следующее: InstallUtil ServiceExample.exe. Это установит Ваш сервис на локальную машину. Для удаления его введите следующее в командной строке: InstallUtil/u ServiceExample.exe
пока Ваш сервис не работает, можно внести изменения в сервис и восстановить, т.е. Вы не должны удалять свой сервис внести изменения в него. Однако Вы будете неспособны перезаписать исполняемый файл со своими мерами и улучшениями, пока он работает.
Для наблюдения сервиса в действии откройте файл ServiceExample.cs и внесите следующие изменения:
using System.Diagnostics;
public partial class ServiceExample : ServiceBase
{
public ServiceExample()
{
// Uncomment this line to debug the service.
//Debugger.Break();
InitializeComponent();
// Ties the EventLog member of the ServiceBase base class to the
// ServiceExample event log created when the service was installed.
EventLog.Log = "ServiceExample";
}
protected override void OnStart(string[] args)
{
EventLog.WriteEntry("The service was started successfully.", EventLogEntryType.Information);
}
protected override void OnStop()
{
EventLog.WriteEntry("The service was stopped successfully.", EventLogEntryType.Information);
}
protected override void OnShutdown()
{
EventLog.WriteEntry("The service was shutdown successfully", EventLogEntryType.Information);
}
}
, Как только Вы выполняете свой сервис с этими изменениями, можно посмотреть на журнал событий ServiceExample в конечном счете Средство просмотра и видеть сообщения, зарегистрированные там.
Hope это помогает.
РЕДАКТИРОВАНИЕ: Если Вы предпочитаете использовать журнал событий Приложения для своей регистрации событий вместо пользовательской, просто не внесите изменения в файл ProjectInstaller.cs. Кроме того, не учтите строку, которая устанавливает свойство Log EventLog в конструкторе ServiceExample. При выполнении сервиса сообщения журнала появятся в журнале событий Приложения.
Я соглашаюсь со всеми, которые ответили в другом месте, но я сказал бы, не фокусируются слишком много на фактическом языке, пока Вы работаете в платформе.NET, и существует проект начинающего для Вас, Вы хороши для движения. Я сделал несколько "служб Windows" в прошлом и разработал их обоих в VB.NET и C# с минимальным кодом.
, Что я рекомендовал бы, OP, чтобы сделать должен изучить, как создать пакет установщика для него. Установка сервиса так же легка, как выполняющийся "installutil.exe {управляет }\\path\to\file.exe", но когда необходимо сделать что-либо большее, чем развертывание "привет мировой" службы Windows, хорошо знать и понять, как действительно развертывают сервис значимым способом.
для Не запуска войны пламени но я "стандартизировал" при использовании WiX для всех моих пакетов развертывания, за пределами выполнения олдскульного взаимодействующего с COM материала типа, так как это - главный удар работы для получения для установки правильно. Я мечтаю о команде WiX для разработки bootstrapper части, которая позволяет Вам помещать предпосылки и основной msi в EXE-файл, который может быть загружен. Им наметили его для 3,5, таким образом, я буду терпеливо ожидать, и использовать WinZip, Самораспаковывающийся исполняемые файлы на данный момент.
С Визуальным C# Вы найдете большинство примеров кода в сети. Объединенный с Visual Studio, и это - обход в парке для подъема основной службы Windows и выполнения. Visual Studio также делает это защелкой для создания пакета установщика MSI.
, Который был бы моим выбором
Для меня, и я только попробовал его, несколько путей, Visual Studio и C# были самыми легкими.
Visual Studio сделала весь необходимый сервис, устанавливающий вертикально установку для платформы, и я нашел C# очень легкий учиться, мигрировав от VB6, VB.NET и C.
Сервисный проект окон в C# даст Вам полностью развертываемый сервис из шаблона Visual Studio щелчком кнопки. Просто необходимо добавить код полезной нагрузки.
Используйте Сервисный проект типа Visual Studio, используйте C# или VB.NET.
я лично предпочитаю C#, но в целом легко понять жизненный цикл и кодировать логику на желаемом этапе.
Здание установщик также очень легок.