Почему первый и второй плохи? это ведь и есть внедрение зависимостей простейшее, и даже оставляет возможность Unit тестирования класса. Во вторых, сервис должен быть синглтоном.
И в функцию передавать 2 параметра, на исходную и результирующую строку, память выделять вне функции, после использования память надо чистить, выделяя память в функции, потом можно потерять указатель и не очистить память, отсюда потом утечки памяти, плюс у вас уже в программе потенциальная уязвимость переполнения буфера.
Станислав Макаров: немного не то вы вычитали, драйвер используется для захвата изображения для передачи, это немного другое, нежели взаимодействие с рабочим столом, я про то, что у него настройки и сам сервис в одном приложении.
Александр: Ну тот же RAdmin3, и настройка и сам сервис в одном сервисе реализовано. Сервисы давно не делал, все через планировщик и обычное приложение. Знаю просто еще несколько приложений, которые могут работать как сервисы + UI, и под всеми версиями, значит ничего сложного нет.
Почему нельзя взаимодействовать с UI? все можно, и причем нормально, просто не принято, просто в сервисе обычно добавляют регистрацию, удаление и все, и ничем он от обычного приложения не отличается, просто выполняется это приложение от имени пользователя SYSTEM. Видел много программ, чистильщиков системы, бэкаперов, которые именно устанавливаются как сервис, запускаются, делают работу, причем с UI и завершаются.
Я работаю с моделью через автоматически созданный DbContext. www.entityframeworktutorial.net/EntityFramework4.3... тут есть пример как добавить. А для редактирования использовать биндинги. Все поля оборачиваем в отдельный грид, даем имя и пишем
var client = new Client();
editGrid.DataContext = client;
сохраняем
using (var dbCtx = new Entities())
{
//Add Student object into Students DBset
dbCtx.Clients.Add(client);
// call SaveChanges method to save student into database
dbCtx.SaveChanges();
}
в Xaml пишем
......
.....
При изменении текста в textbox автоматически будет меняться нужное поле в объекте.