بستن اپلیکیشن هنگکرده در ویندوز بدون ریاستارت
ترتیب ایمن برای بستن اپ Not Responding: Task Manager، taskkill، Stop-Process، تفکیک سرویس و زمان ریاستارت واقعی.
بنیانگذار و مهندس محصول

پنجرهٔ Not Responding، IDE سفید، یا node که پورت را رها نمیکند، بسیاری را مستقیم به دکمهٔ Reset میفرستد. ریاستارت کار میکند چون همه چیز را میکشد — ولی ذخیرهٔنشده، VMها، و اتصالها را هم با خود میبرد. در بیشتر موارد میتوان فقط درخت همان فرایند را بست و به کار برگشت.
این مقاله ترتیب ایمن از End task تا taskkill /T، تفاوت اپ کاربر با سرویس، و نشانههایی که واقعاً به ریاستارت نیاز دارند را میگوید.

پاسخ کوتاه
اول سعی کنید پنجره را با UI ببندید؛ اگر Not Responding ماند، Task Manager → End task. اگر نرفت، در Details با PID از Stop-Process -Force یا taskkill /PID /T استفاده کنید. برای سرویسها Stop-Service را ترجیح دهید. وقتی کل شِل گرافیکی مرده یا دیسک ۱۰۰٪ گیر کرده، آنوقت ریاستارت منطقی است.
اول PID درست را بکش؛ نه کل روز کاری را.
چرا اپ Hang میکند؟
- انتظار روی I/O (شبکه، فایل قفل، آنتیویروس).
- بنبست نخها در خود اپ.
- مصرف شدید حافظه و thrashing.
- دیالوگ پنهان پشت پنجرهها که منتظر کلیک است.
- فرزند zombie که والد را نگه داشته.
دانستن علت دقیق همیشه ممکن نیست؛ هدف عملی بازیابی کنترل است و بعد، اگر تکرار شد، لاگ و پروفایل.
سطح ۱: بستن مؤدبانه
- Alt+F4 روی پنجرهٔ هدف.
- اگر دیالوگ ذخیره آمد، تصمیم بگیرید.
- برای اپهای چندپنجرهای، همهٔ پنجرهها را امتحان کنید.
گاهی Hang واقعی نیست و پنجره زیر بقیه است. Win+Tab یا Alt+Tab را قبل از کشتن امتحان کنید.
سطح ۲: Task Manager
- Ctrl+Shift+Esc.
- Processes → اپ را پیدا کنید → End task.
- اگر چند فرایند همنام است (مثلاً چند chrome)، همانی را ببندید که CPU/Memory غیرعادی دارد یا از End task درخت استفاده کنید.
- Go to details برای دیدن PID دقیق.
سطح ۳: PowerShell و taskkill
powershell
Get-Process | Where-Object Responding -EQ $false Get-Process code -ErrorAction SilentlyContinue | Select-Object Id, ProcessName, Responding, CPU Stop-Process -Id <PID> -Force
powershell
taskkill /PID <PID> /T taskkill /IM node.exe /T taskkill /IM MyApp.exe /F /T
طبق Microsoft Learn، taskkill فرایند را خاتمه میدهد؛ /T درخت فرزندان را هم میگیرد که برای dev serverهای چندفرایندی مهم است. /F اجبار میکند وقتی خاتمهٔ عادی جواب نمیدهد. نام IM باید دقیق باشد تا فرایند اشتباه نرود.
Stop-Process در PowerShell معادل عملی برای اسکریپتهاست. قبل از -Force روی ابزار ناشناس، Confirm و نام را دوباره بخوانید.
سطح ۴: وقتی End task هم گیر میکند
- صبر کوتاه اگر Disk در Performance صددرصد است؛ ممکن است بعد از اتمام I/O آزاد شود.
- Resource Monitor → CPU → Associated Handles برای فایل قفل؛ فرایند قفلکننده را شناسایی کنید.
- اگر Explorer هنگ کرده: Task Manager → Windows Explorer → Restart (نه End لزوماً).
- برای درایور/کرنللاک واقعی، ممکن است فقط ریاستارت بماند.
سرویس در برابر اپ کاربر
اگر آنچه قفل شده یک Windows Service است، کشتن خام PID میتواند وضعیت StopPending و وابستگیها را بدتر کند. اول:
powershell
Get-Service | Where-Object Status -EQ 'StopPending' Stop-Service -Name <Name> -Force
پورت رها نشده بعد از Hang
گاهی پنجره بسته شده ولی فرزند روی پورت مانده. بعد از taskkill /T:
powershell
Get-NetTCPConnection -LocalPort 3000 -ErrorAction SilentlyContinue | Select-Object OwningProcess, State
IDE و مرورگر: نکات ویژه
- VS Code/Visual Studio ممکن است چند فرایند helper داشته باشند؛ /T یا End task از ریشهٔ درست.
- مرورگر با پروفایلهای جدا: فقط فرایند همان پنجره را هدف بگیرید تا جلسهٔ کاری دیگر نپرد.
- ذخیرهٔ اضطراری: بعضی IDEها فایل بازیابی دارند؛ بعد از کشتن اول سراغ Restore بروید نه Panic.
چه وقت واقعاً ریاستارت لازم است؟
| نشانه | اقدام |
|---|---|
| فقط یک اپ Not Responding | End task / taskkill |
| Explorer قفل، بقیه زندهاند | Restart Explorer |
| ماوس/کیبورد سیستمعامل جواب نمیدهد | سختافزاری یا ریاستارت |
| دیسک ۱۰۰٪ ماندگار + صف طولانی بدون پیشرفت | پس از چند دقیقه بررسی، ریاستارت ممکن است |
| صفحه آبی یا قطع نمایش کامل | ریاستارت / بررسی Event بعداً |
ثبت برای تکرار بعدی
اگر Hang تکرار میشود، قبل از کشتن سریع: زمان، نام فرایند، و یک اسکرین از Task Manager بردارید. بعد در Event Viewer بهدنبال Application Hang/Error همزمان بگردید. بدون ثبت، همیشه در حلقهٔ «کشتم و رفتم» میمانید.
اشتباههای رایج
- taskkill /IM با نامی که چند ابزار حیاتی را میگیرد.
- کشتن winlogon/csrss و مشابه از روی کنجکاوی.
- ریبوت بهعنوان اولین Reflex برای هر Not Responding.
- نادیده گرفتن درخت فرزند و تعجب از پورت اشغال.
- Force روی دیتابیس بدون فکر به corruption احتمالی تراکنش باز.
در کار روزمره روی ویندوز موضوع force kill risk / follow-up را با Stop-Service first, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع force kill risk / follow-up را با Stop-Service first, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع force kill risk / follow-up را با Stop-Service first, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع force kill risk / follow-up را با Stop-Service first, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع force kill risk / follow-up را با Stop-Service first, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد.
در کار روزمره روی ویندوز موضوع force kill risk را با Stop-Service first بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع force kill risk را با Stop-Service first بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع force kill risk را با Stop-Service first بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع force kill risk را با Stop-Service first بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع force kill risk را با Stop-Service first بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع force kill risk را با Stop-Service first بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد.
ریسک دیتابیس
در کار روزمره روی ویندوز موضوع remote hang / follow-up را با Hyper-V console, Stop-Process, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع remote hang / follow-up را با Hyper-V console, Stop-Process, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع remote hang / follow-up را با Hyper-V console, Stop-Process, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع remote hang / follow-up را با Hyper-V console, Stop-Process, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع remote hang / follow-up را با Hyper-V console, Stop-Process, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد.
در کار روزمره روی ویندوز موضوع remote hang را با Hyper-V console, Stop-Process بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع remote hang را با Hyper-V console, Stop-Process بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع remote hang را با Hyper-V console, Stop-Process بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع remote hang را با Hyper-V console, Stop-Process بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع remote hang را با Hyper-V console, Stop-Process بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع remote hang را با Hyper-V console, Stop-Process بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد.
RDP و break-glass
در کار روزمره روی ویندوز موضوع process tree / follow-up را با Win32_Process, taskkill /T, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع process tree / follow-up را با Win32_Process, taskkill /T, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع process tree / follow-up را با Win32_Process, taskkill /T, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع process tree / follow-up را با Win32_Process, taskkill /T, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع process tree / follow-up را با Win32_Process, taskkill /T, Microsoft Learn بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد.
در کار روزمره روی ویندوز موضوع process tree را با Win32_Process, taskkill /T بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع process tree را با Win32_Process, taskkill /T بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع process tree را با Win32_Process, taskkill /T بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع process tree را با Win32_Process, taskkill /T بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع process tree را با Win32_Process, taskkill /T بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. موضوع process tree را با Win32_Process, taskkill /T بررسی کنید، نتیجه را یادداشت کنید و بدون پایه سیستم را عوض نکنید. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد. اگر مشکل تکرار شد، زمان، PID و Event ID را ثبت کنید تا دفعه قابل استناد باشد.
درخت فرایند
خلاصه
برای اپ هنگکرده از مؤدبانه به Task Manager و سپس taskkill/Stop-Process با PID و /T بروید، سرویس را از اپ جدا کنید، پورت را بعد از قتل بررسی کنید، و ریاستارت را برای شکست لایهٔ سیستم نگه دارید. عادت ثبت علت، تکرار را کم میکند.
سوالات متداول
تفاوت End task و End process tree چیست؟
درخت، فرزندان را هم میبندد؛ برای اپهای چندفرایندی معمولاً مؤثرتر است.
Responding در Get-Process چیست؟
نشان میدهد آیا پنجره به پیامهای UI پاسخ میدهد؛ False بودن نشانهٔ Hang رابط است، نه همیشه بنبست کامل.
آیا taskkill خطرناک است؟
مثل هر خاتمهٔ اجباری میتواند دادهٔ ذخیرهنشده را از بین ببرد. روی فرایند درست و پس از تلاش مؤدبانه استفاده کنید.
اگر Remote Desktop قفل شد؟
از ماشین دیگر یا کنسول ابری/hypervisor جلسه را مدیریت کنید؛ taskkill ریموت با مجوز مناسب هم گزینه است.
منابع و مراجع
- taskkill — Microsoft Learn: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/taskkill
- Stop-Process — Microsoft Learn: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/stop-process
- Get-Process — Microsoft Learn: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-process
نویسنده
سهیل ابراهیمپور بنیانگذار FutureForge است. روی طراحی محصول، معماری و استقرار نرمافزار سفارشی کار میکند.
یادداشتهای مرتبط
اگر در انتخاب معماری یا مسیر توسعه مطمئن نیستید، میتوانید درباره پروژه صحبت کنیم.
مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ میکنیم.




