avevo bisogno di fare la stessa cosa e il mio punto di partenza è stato Salvador La risposta di Sarpi. Ma ho trovato un paio di cose che dovevano essere aggiunte al suo esempio.
Prima di tutto, è necessario impostare UseShellExecute su false per l'oggetto ProcessStartInfo. In caso contrario, è possibile che venga visualizzato un avviso di sicurezza all'avvio del processo chiedendo all'utente se desidera eseguirlo o meno. Non penso che questo sia desiderato.
In secondo luogo, è necessario chiamare Shutdown sull'oggetto MongoServer prima di uccidere il processo. Ho avuto un problema in cui ha bloccato il database e ha richiesto che fosse riparato se non avessi chiamato il metodo Shutdown prima di uccidere il processo. See Here for details on repairing
Il mio codice finale è diverso, ma per questo esempio ho usato il codice di Salvador come base di riferimento.
//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();
fonte
2013-10-15 15:23:19
È possibile definire ulteriormente "portatile"? Quali sono i tuoi requisiti? –
@ csharptest.net Modifica la domanda con il mezzo del portatile –