का उपयोग कर मैं CreateProcessAsUser उपयोग कर रहा हूँ सी # में एक सेवा मेरी सेवा से बाहर निकलने के प्रक्रिया के लिए इंतजार करने की जरूरत है द्वारा एक प्रक्रिया शुरू करने के लिए, लेकिन मैं कैसे मैं यह कर सकता पता नहीं है बाहर निकलने के लिए, मैं प्रक्रिया सूची में प्रक्रिया अस्तित्व की जांच करना नहीं चाहताइंतजार जब CreateProcessAsUser
उत्तर
चेक http://www.pinvoke.net/ लपेट होता है। यहाँ एक शिम उदाहरण है।
const UInt32 INFINITE = 0xFFFFFFFF;
// Declare variables
PROCESS_INFORMATION pi;
STARTUPINFO si;
System.IntPtr hToken;
// Create structs
SECURITY_ATTRIBUTES saThreadAttributes = new SECURITY_ATTRIBUTES();
// Now create the process as the user
if (!CreateProcessAsUser(hToken, String.Empty, commandLine,
null, saThreadAttributes, false, 0, IntPtr.Zero, 0, si, pi))
{
// Throw exception
throw new Exception("Failed to CreateProcessAsUser");
}
WaitForSingleObject(pi.hProcess, (int)INFINITE);
आप GetExitCodeProcess का उपयोग कर सकते हैं, लेकिन ध्यान दें कि यह फ़ंक्शन तुरंत लौटाता है।
एक और दृष्टिकोण WaitForSingleObject का उपयोग कर रहा है। लेकिन इस प्रक्रिया को SYNCHRONIZE ध्वज के साथ खोलने की आवश्यकता है। उदाहरण:
IntPtr hwnd = OpenProcess(SYNCHRONIZE, 0, pid);
if (hwnd != IntPtr.Zero) {
WaitForSingleObject(hwnd, INFINITE);
CloseHandle(hwnd);
}
CreateProcessAsUser
रिटर्न आप एक संरचना PROCESS_INFORMATION
, जो hProcess
शामिल हैं - प्रक्रिया संभाल। यह WaitForSingleObject
/WaitForMultipleObjects
फ़ंक्शंस के लिए मान्य संभाल है।
PROCESS_INFORMATION रिटर्न नव निर्मित प्रक्रिया (hProcess
) को संभाल, तो आप इस संभाल जो संकेत हो जाएगा जब प्रक्रिया रास्ते पर इंतजार कर सकते हैं।
आप SafeWaitHandle का उपयोग संभाल को समाहित कर सकते हैं और फिर WaitHandle.WaitOne का उपयोग प्रक्रिया से बाहर निकलने के लिए प्रतीक्षा करने के लिए कर सकते हैं।
का तरीका यहां बताया प्रक्रिया को संभालने
class ProcessWaitHandle : WaitHandle
{
public ProcessWaitHandle(IntPtr processHandle)
{
this.SafeWaitHandle = new SafeWaitHandle(processHandle, false);
}
}
और फिर निम्न कोड हस्ताक्षर के लिए बाहर हैंडल पर इंतजार कर सकते हैं
ProcessWaitHandle waitable = new ProcessWaitHandle(pi.hProcess);
waitable.WaitOne();
- 1. CreateProcessAsUser त्रुटि 1314
- 2. बैश कार्य जब तक पाश इंतजार
- 3. CreateProcessAsUser सक्रिय सत्र में विंडो बनाना
- 4. लॉगऑनसर -> सिस्टम सेवा से CreateProcessAsUser
- 5. पिलैब matplotlib "शो" इंतजार करता है जब तक खिड़की
- 6. CreateProcessAsUser के लिए मैं वैध उपयोगकर्ता टोकन कैसे प्राप्त करूं?
- 7. का इंतजार AsyncMethod() बनाम इंतजार इंतजार Task.Factory.StartNew <TResult> (AsyncMethod)
- 8. jQuery इंतजार किया जाता है
- 9. इंतजार बंद करने के लिए
- 10. Linq: इंतजार कर रहे हालत
- 11. स्कैला फ्यूचर ब्लॉक थ्रेड पर इंतजार है?
- 12. एक गतिरोध की रोकथाम जब इंतजार का उपयोग किए बिना एक async विधि बुला
- 13. एएसपी.नेट एसिंक/भाग 2 का इंतजार करें
- 14. async साथ ThreadStatic वैरिएबल का उपयोग/इंतजार
- 15. हास्केल में कुंजीपटलों का इंतजार करने के लिए इंतजार करने का एक आसान तरीका क्या है?
- 16. संसाधन async के साथ ताला लगा/इंतजार
- 17. .NET 4.0 में विकल्प का इंतजार?
- 18. का इंतजार नहीं कर सकते async लैम्ब्डा
- 19. अक्का अभिनेता "पूछना" और "का इंतजार" TimeoutException
- 20. फ़ाइलस्ट्रीम WriteAsync और भ्रम का इंतजार
- 21. जावा - कैसे पता चलेगा कि धागा इंतजार कर रहा है?
- 22. एसीके भेजने से पहले एसआईएफएस समय क्यों इंतजार करें?
- 23. जब आप
- 24. प्रतिनिधि - अपवाद EndInvoke() कॉल तक इंतजार नहीं करना
- 25. सेलेनियम अजाक्स इंतजार अगर अजाक्स कोई तत्व नहीं देता है?
- 26. प्रतिक्रिया के इंतजार किए बिना पोस्ट अनुरोध भेज रहे हैं?
- 27. मैं एकाधिक धागे को रोकने के लिए कैसे इंतजार करूंगा?
- 28. कैसे जांचें कि कोई प्रदर्शनकर्ता है: निष्पादित करने का इंतजार?
- 29. सी # 5 async/थ्रेड यांत्रिकी का इंतजार गलत लगता है?
- 30. मेरा एप्लिकेशन सिंक्रनाइज़ेशन के लिए इतना इंतजार क्यों करता है?
मैंने एक उदाहरण जोड़ा कि प्रक्रिया संभाल कैसे लपेटा जा सकता है। –