چطور فایل باز شده در ویندوز توسط Process در سی شارپ کنترل کنیم ؟
من یک فایلی رو باز میکنم به این شکل :
var MyProcess0 = Process.Start(@"C:\GotFiles\1.png");
فایل من که یک عکس هست باز میشه اما Process چیزی که توی MyProcess0 برگردونه null هستش !
بنا بر این , این خط کد هم به خطا میخوره :
MyProcess0.WaitForExit();
خطا:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
MyProcess0 was null.
چیزی که نیاز دارم : چطوری میتونم یک فایل رو باز کنم و منتظر بمونم تا زمانی که کاربر اون رو ببنده !
لینک معادل : Why does the process return null if we use the Windows temporary path for Process.Start of a file in C#?
جوابی که یکی از کاربران دادن :
The Windows API function that is ultimately called by Process.Start with UseShellExecute=true is ShellExecuteEx. The documentation for calling this function includes the following -
"Note: ShellExecuteEx does not always return an hProcess, even if a process is launched as the result of the call. For example, an hProcess does not return when you use SEE_MASK_INVOKEIDLIST to invoke IContextMenu."
Consequently, the call to Process.Start is not guaranteed to return a non-null Process reference.
پاسخ هوش مصنوعی
برای کنترل یک فایل باز شده در ویندوز و منتظر ماندن تا زمانی که کاربر آن را ببندد، می توانید از کلاس Process با UseShellExecute برابر با true استفاده کنید. با این وجود، همانطور که در توضیحات لینک شما نیز ذکر شده، این مورد ممکن است null برگرداند.
برای این کار می توانید از Process.Start به صورت زیر استفاده کنید:
using System.Diagnostics;
Process MyProcess0 = new Process();
MyProcess0.StartInfo.FileName = @"C:\GotFiles\1.png";
MyProcess0.StartInfo.UseShellExecute = true;
MyProcess0.Start();
// چک کردن تا زمانی که پروسه بسته نشده است
while (!MyProcess0.HasExited)
{
System.Threading.Thread.Sleep(100); // خواب کوتاه برای جلوگیری از استفاده زیاد از CPU
}
در این مثال، پس از راه اندازی تصویر، یک حلقه ایجاد می شود که تا زمانی که پروسه بسته نشده است، ادامه می یابد. این روش به شما امکان می دهد منتظر بمانید تا کاربر فایل را ببندد.
- دسترسی به پکیج های nuget در زمان قطع نت بین الملل
- نمایش آخرین ردیف دیتاگیرید موقع لود در wpf
- مشکل اینترنت جهانی و عدم دسترسی به cdnjs.cloudflare.com
- مشکل در نصب sql server 2022
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- تفاوت های تلگرام و واتس اپ چیست ؟
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول