muszę zrobić to samo i mój punkt wyjścia był Salvador Odpowiedź Sarpi. Ale znalazłem kilka rzeczy, które należało dodać do jego przykładu.
Najpierw należy ustawić wartość UseShellExecute na wartość false dla obiektu ProcessStartInfo. W przeciwnym razie po uruchomieniu procesu może pojawić się ostrzeżenie o bezpieczeństwie zadając użytkownikowi pytanie, czy chce go uruchomić, czy nie. Nie sądzę, że to jest pożądane.
Po drugie, musisz wywołać Shutdown na obiekcie MongoServer, zanim zabijesz proces. Miałem problem z zablokowaniem bazy danych i wymaganiem jej naprawy, jeśli nie zadzwonię do metody Shutdown przed zabiciem procesu. See Here for details on repairing
Mój końcowy kod jest inny, ale dla tego przykładu użyłem kodu Salvadora jako podstawy odniesienia.
//starting the mongod server (when app starts)
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = dir + @"\mongod.exe";
start.WindowStyle = ProcessWindowStyle.Hidden;
// set UseShellExecute to false
start.UseShellExecute = false;
//@"" prevents need for backslashes
start.Arguments = @"--dbpath d:\test\mongodb\data";
Process mongod = Process.Start(start);
// Mongo CSharp Driver Code (see Mongo docs)
MongoClient client = new MongoClient();
MongoServer server = client.GetServer();
MongoDatabase database = server.GetDatabase("Database_Name_Here");
// Doing awesome stuff here ...
// Shutdown Server when done.
server.Shutdown();
//stopping the mongod server (when app is closing)
mongod.Kill();
Czy można dodatkowo zdefiniować "przenośny"? Jakie są twoje wymagania? –
@ csharptest.net Edytuję pytanie przy pomocy przenośnego –