กระบวนการ ArcMap.exe ยังคงเปิดอยู่หลังจากปิด ArcMap? [ปิด]


23

ฉันรู้ว่าสิ่งนี้เกิดขึ้นหลายเดือนที่ผ่านมาเมื่อฉันไม่สามารถเปลี่ยนโครงสร้างตารางในอินสแตนซ์ของ ArcMap หลังจากอินสแตนซ์อื่นถูกปิด ตัวอย่างเช่นเมื่อฉันลบหรือเพิ่มบางฟิลด์ไปยังคลาสคุณลักษณะใน ArcMap ให้บันทึกและปิดเอกสารและเปิด ArcCatalog และพยายามที่จะลบคลาสฟีเจอร์นั้นที่ฉันได้รับการลบล้มเหลว: ล้มเหลวในการลบวัตถุที่เลือก สิ่งนี้มักจะเกิดขึ้นเมื่ออินสแตนซ์ของ ArcMap ที่มีเลเยอร์ซึ่งฉันพยายามลบถูกเปิดเพื่อให้วิธีแก้ปัญหาคือไฟขึ้นตัวจัดการงานของ Windows และฆ่ากระบวนการ ArcMap.exe ที่ยังคงเปิดอยู่

ใครมีปัญหานี้?

ตอนนี้ใช้ SP3 และปัญหายังไม่ได้รับการแก้ไข

ป้อนคำอธิบายรูปภาพที่นี่


ฉันกำลังเรียกใช้การตั้งค่าที่คล้ายกันมากในเครื่องที่เทียบเคียงกันและฉันไม่มีปัญหานี้


4
ใช่! โปรดดูโพสต์ฟอรัมของฉันในฟอรัม ESRI ฉันพยายามที่จะทำซ้ำ (ดูเหมือนสุ่ม ... ) เพื่อเปิดตั๋วด้วย ESRI
SaultDon

คุณได้โหลดส่วนขยายของบุคคลที่สามใด ๆ หรือไม่ ฉันสงสัยว่าข้อยกเว้นใน IExtension.Shutdown อาจอธิบายสิ่งนี้ได้
Kirk Kuykendall

@kirk ฉันไม่มีและไม่เคยติดตั้งใด ๆ ในการติดตั้ง v10 นี้ นี่เป็นการติดตั้งใหม่ของ windows7 คล้ายกับคุณสิ่งนี้ยังคงมีอยู่ก่อนหน้า SP1
SaultDon

2
คุณใช้กระบวนการเกือบ 100 กระบวนการอาจเป็นอะไรก็ได้จริง ๆ แต่ฉันน่าสงสัยมากที่สุดเกี่ยวกับโปรแกรมสแกนไวรัสซอฟต์แวร์สำรองข้อมูลและบริการทำดัชนีการค้นหา
blah238

@ Kirk - ไม่มีส่วนขยายสำหรับการตั้งค่านี้โดยเฉพาะ แต่ฉันจะตรวจสอบอีกครั้งเมื่อฉันทำงาน ฉันมีเครื่องมือเพิ่มของตัวเอง ฉันมีการตั้งค่าที่คล้ายกันในเครื่อง Windows 7 เครื่องอื่นที่มีส่วนเสริมเดียวกันและไม่มีปัญหา
Jakub Sisak GeoGraphics

คำตอบ:


18

ไม่ใช่ความผิดของคุณและไม่มากที่คุณสามารถทำได้ อย่างไรก็ตามหากคุณสงสัยเกี่ยวกับเหตุผลที่เกิดขึ้นก็คือมีการอ้างอิงแบบวงกลม COM (ส่วนใหญ่มีแนวโน้มที่จะได้ยินบางสิ่งบางอย่างจากแหล่งเหตุการณ์ - เช่นตัวแก้ไข) และเมื่อแอปพลิเคชันพยายามที่จะออกจากมันไม่สามารถทำได้ มีชีวิตอยู่กัน สิ่งนี้อาจมาจากส่วนขยายที่คุณติดตั้งหรือแม้กระทั่งจากภายในโค้ด ESRI สิ่งนี้เคยเกิดขึ้นตลอดเวลาและอาจปรากฏขึ้นภายใต้เงื่อนไขบางอย่างเท่านั้นเช่นคำสั่งบางอย่างที่ปรากฏในแถบเครื่องมือ

จากการสอน ArcObjects เก่า ๆ เกี่ยวกับแนวคิด COM :

เมื่อออกจากแอปพลิเคชันมันจะปล่อยการอ้างอิงที่มีอยู่ในคำสั่ง หากคำสั่งยังทำหน้าที่เป็น sink เหตุการณ์แอปพลิเคชันจะเก็บการอ้างอิงไปยังคำสั่งอื่นซึ่งไม่สามารถปล่อยได้จนกว่าคำสั่งจะตัดการเชื่อมต่อจากแหล่งที่มา เนื่องจากคำสั่งไม่ทราบถึงจุดที่สามารถยกเลิกการเชื่อมต่ออื่นนอกเหนือจาก destructor ของตัวเองสิ่งนี้จะทำให้เกิดการอ้างอิงแบบวงกลมโดยที่แอปพลิเคชันไม่สามารถออกได้โดยไม่มีคำสั่งทำลายและคำสั่ง destructor ของคำสั่งไม่เคยถูกเรียก . ทำให้แอปพลิเคชันหยุดทำงานเมื่อออกจากระบบ

หากคุณสงสัยมากขึ้นให้ลบ (หรือสำรองข้อมูล) Normal.mxt ซึ่งจะล้างข้อมูลการปรับแต่งทั้งหมดและดูว่าปัญหานี้ยังคงมีอยู่หรือไม่


3
+1 คำอธิบายที่ดี ทำให้ฉันสงสัยว่าการปิด commandbars ทั้งหมดยกเว้นอันใดอันหนึ่งแล้วบันทึกและออกและลองสร้างปัญหาขึ้นมาใหม่ ฉันไม่คิดว่า ICommandOnCreate จะถูกเรียกจนกระทั่งแถบเครื่องมือปรากฏขึ้น หากคุณค่อยๆเปิดแถบเครื่องมือและทำการทดสอบซ้ำคุณอาจ จำกัด รายการคำสั่งต้องสงสัยให้แคบลง
Kirk Kuykendall

คำอธิบายที่ดี ขอบคุณ @ Kirk - ฉันมีเครื่องมือของบุคคลที่สามที่ฉันลืม (ArcBruTile) ฉันจะลบมันออก Add-in ของฉันทำการฟังเหตุการณ์บางอย่างดังนั้นฉันสงสัยว่าแถบเครื่องมือของฉันอาจเป็นสาเหตุของปัญหาได้ สิ่งที่แปลกคือฉันมีเครื่องมือที่เหมือนกันในเครื่องอื่น ๆ ของฉันเช่นเดียวกับแถบเครื่องมือเริ่มต้นชุดเดียวกันที่โหลดและฉันไม่มีปัญหานี้ ฉันจะพยายามเริ่มต้นด้วย Normal.mxt สดนั่นเป็นคำแนะนำที่ดี
Jakub Sisak GeoGraphics

นอกจากนี้บางครั้งเมื่อการแสดงให้เห็นเพียงอาจไม่เพียงพอที่จะทำให้เกิดการอ้างอิงแบบวงกลม - มันอาจต้องใช้เหตุการณ์บางอย่างที่จะเกิดขึ้นสำหรับเงื่อนไขที่จะเปิดเผยตัวเอง ตัวอย่างเช่นคำสั่งสามารถมองเห็นได้และทุกอย่างเรียบร้อยและสวยงามรอให้เหตุการณ์ "StartEditing" เกิดขึ้น เมื่อทริกเกอร์มันตัดสินใจที่จะเริ่มคว้าการอ้างอิงไปยังสิ่งอื่น - และมีการตั้งค่าการอ้างอิงอื่น ๆ ที่ทำให้เกิดสภาพวงกลม นี่เป็นปัญหาแบบคลาสสิกกับส่วนขยาย VB และคำสั่ง. NET มากยิ่งขึ้นเนื่องจากชุดเก็บขยะที่ไม่ได้กำหนดไว้
Ragi Yaser Burhum

2

ขอบคุณ @Kirk และ @Ragi สำหรับการแก้ปัญหานี้! นี่คือสิ่งที่ฉันได้ทำในขณะที่ตรวจสอบกระบวนการจัดการงาน:

  1. สำรองและลบ Normal.mxt
  2. เริ่มเอกสาร ArcMap ใหม่ (เปิด ArcMap ในการกำหนดค่าเริ่มต้น)
  3. ArcMap แบบปิด (กระบวนการปิดตามที่คาดไว้)
  4. เพิ่ม Toobars: นักวิเคราะห์สามมิติ, การแก้ไขขั้นสูง, เครื่องมือเฟรมข้อมูล, วาด, แก้ไขจุดยอด, ตัวแก้ไข, การจัดตำแหน่งภูมิศาสตร์, การติดฉลาก, โครงร่าง, การจัดวาง
  5. จัดเรียงแถบเครื่องมือ
  6. ArcMap แบบปิด (กระบวนการปิดตามที่คาดไว้)
  7. เริ่มเอกสาร ArcMap ใหม่
  8. เพิ่มแถบเครื่องมือที่กำหนดเองของฉันเองด้วย Add-in
  9. ArcMap แบบปิด (กระบวนการปิดตามที่คาดไว้)
  10. เริ่มเอกสาร ArcMap ที่มีอยู่
  11. ใช้การเริ่มและหยุดแบบกำหนดเองที่กำหนดเองบนแถบเครื่องมือของฉันและเครื่องมือที่กำหนดเอง
  12. ArcMap แบบปิด (กระบวนการปิดตามที่คาดไว้)

ฉันยังลบและลบ ArcBruTile ด้วย

กระบวนการ ArcMap ตอนนี้ปิดตามที่คาดไว้


2
พูดเร็วเกินไป ปัญหากลับมาแล้ว
Jakub Sisak GeoGraphics

น่าเสียดายที่การสนับสนุน ESRI ได้รับการคัดลอกและวางคำตอบข้างต้นเป็นวิธีแก้ปัญหาเมื่อดูเหมือนว่าจะใช้งานไม่ได้: /
MaryBeth

@Jakub คุณเคยพบวิธีแก้ปัญหานี้หรือไม่? ฉันกำลังสร้าง Addin และเพิ่งสังเกตเห็นกระบวนการ ArcMap ที่ทำงานอยู่หลังจากออกจากระบบ
Barbarossa

ดูเหมือนว่าฉันทามตินั้นเป็นกระบวนการที่เปิดขึ้นและไม่ถูกปิดอย่างถูกต้องโดยบุคคลที่สาม / ส่วนเสริม ฉันสร้าง addins ของตัวเองและฉันเพิ่งจะผ่านรหัสทั้งหมดของฉันเพื่อให้มั่นใจว่าวัตถุทั้งหมดได้รับการปล่อยตัวหรือและมีโอกาสมากขึ้นที่ปัญหาได้รับการแก้ไขที่แหล่งที่มาโดย ESRI เนื่องจากมันไม่ได้เกิดขึ้นใน 10.3 อีกต่อไป 10.2 หากสิ่งนี้ยังคงเกิดขึ้นถอนการติดตั้งและหรือลบทั้งหมดของบุคคลที่สามและดูว่าปัญหายังคงมี หากไม่หมุนให้เพิ่มทีละคนเพื่อค้นหาผู้กระทำผิด หวังว่านี่จะช่วยได้
Jakub Sisak GeoGraphics

2

ไม่พยายามที่จะนำโพสต์นี้กลับมาจากความตาย แต่ในขณะที่ทำงานกับการสนับสนุน ESRI ในปัญหานี้กับเซิร์ฟเวอร์ Citrix (ผู้ใช้ขัดข้องหรือออกจากระบบ arcgiscachemanager.exe ไม่ได้ปิดในเวลา 20-30 นาทีในภายหลังหรือมากกว่านั้น ผู้ใช้ไม่สามารถกลับไปที่ ArcMap ได้จากนั้นพวกเขาต้องพึ่งพาผู้ดูแลเซิร์ฟเวอร์ 2 คนเพื่อให้สามารถเข้าสู่เซิร์ฟเวอร์และปล่อยด้วยตนเอง) ESRI กำลังคัดลอกและวางโซลูชันจากหน้านี้และใช้งานไม่ได้ อย่างน้อยก็ไม่ทำงานในสภาพแวดล้อม Citrix

สำหรับ Citrix เราพบว่าการสร้างรีจิสตรีคีย์สองอัน (อันหนึ่งสำหรับการฆ่าโพรเซสที่หยุดทำงานอันที่หนึ่งสำหรับการผลักดันการตั้งค่ากลับสู่สถานะดั้งเดิม) "แก้ไข" ปัญหา

สำหรับผู้ที่ไม่ได้เป็น Citrix เราได้คิดด้วยการสร้างสคริปต์เพื่อฆ่ากระบวนการ แต่เนื่องจากเมื่อเราไม่ได้อยู่ใน Citrix เราอยู่บนเซิร์ฟเวอร์แล้วเราจึงตัดสินใจว่าไม่จำเป็น

หวังว่านี่จะช่วยได้

------- คัดลอกข้อมูลจากตั๋วสนับสนุนที่เพิ่มขึ้น -------- Citrix มีการตั้งค่าคีย์รีจิสทรีที่จะช่วยจัดการแอปพลิเคชันที่วางไข่กระบวนการที่สองในพื้นหลัง คุณมีอาการหลายอย่างที่ควรทำให้วิธีนี้เป็นวิธีที่น่าเชื่อถือ อ่านบทความความรู้ของ Citrix ต่อไปนี้:

การออกจากระบบอย่างนุ่มนวลจากแอปพลิเคชั่นที่เผยแพร่ทำให้เซสชันในสถานะใช้งานอยู่: http://support.citrix.com/article/CTX891671

เซสชันที่ใช้งานอยู่หลังจากที่ผู้ใช้ล็อกออฟใน XenApp Environment เมื่ออัพเกรดจาก Windows Server 2003 เป็น Windows Server 2008: http://support.citrix.com/article/CTX134956

XenApp 6.5 คอนโซลของ AppCenter แสดงสถานะแอปพลิเคชันไม่ทำงาน: http://support.citrix.com/article/CTX133328

ในบทความเหล่านี้จะกล่าวถึงวิธีที่แอปพลิเคชันที่เผยแพร่สามารถทำให้เซสชันไม่สามารถปิดได้หรือผู้ใช้ไม่ได้ออกจากระบบอย่างถูกต้อง ในกรณีดังกล่าวจะต้องมีการรีเซ็ต / ออกโดยผู้ดูแลระบบหรือโดยยกเลิกกระบวนการจากเซิร์ฟเวอร์ที่ยังคงทำงานอยู่ สิ่งที่เกิดขึ้นใน Citrix คือคุณเผยแพร่แอปพลิเคชันหลักใน ArcMap ของคุณ เฉพาะ exe ที่ถูกปิดเมื่อออกจากแอปพลิเคชัน (หรือหากเกิดปัญหา) ด้วยเหตุนี้ exe ใด ๆ ที่เกี่ยวข้องกับแอปพลิเคชันที่ถูกวางไข่เมื่อแอปพลิเคชันที่เปิดอยู่นั้นไม่ได้ถูกปิดอย่างสมบูรณ์ใน Citrix ที่ทำให้เกิดสถานะนี้ ดังนั้นเมื่อ ArcGISCacheMgr.exe ใช้เวลานานในการดำเนินการหรือแอปพลิเคชันขัดข้องผู้ใช้ปลายทางของคุณจะไม่สามารถเริ่มเซสชันใหม่ได้

บทความกล่าวถึงวิธีการที่คุณสามารถเพิ่มกระบวนการรองเหล่านี้ในรีจิสตรีคีย์เพื่อปิดโดยอัตโนมัติเมื่อปิดแอปพลิเคชันหลัก ตัวเลือกอื่นที่คุณสามารถสำรวจคือสคริปต์ออกจากระบบเพื่อตรวจสอบกระบวนการและยุติหากมีอยู่


2

สร้างไฟล์. bat และวางลงในและบันทึกลงบนเดสก์ท็อป

 taskkill /IM ArcGisCacheMgr.exe /f
 taskkill /IM ArcGisConnection.exe /f
 "C:\Program Files (x86)\ArcGIS\Desktop10.1\bin\ArcMap.exe"

4
คำอธิบายว่าคำสั่งเหล่านี้ (และตัวเลือก) กำลังทำอะไรจะช่วยให้ผู้ที่ไม่ได้ฝึกหัดเข้าใจวิธีแก้ปัญหาของคุณ
whuber

1

PsKillจากSysInternals Suite (สาปใกล้ชุดเครื่องมือบังคับในความคิดของฉัน) สามารถเชื่อมโยงกับทางลัดและใช้งานได้ตามความประสงค์เพื่อล้างกระบวนการที่แขวนอยู่ การทำเช่นนั้นน่าเกลียดในการที่ไม่ทำอะไรเลยเพื่อแก้ไขปัญหาเดิม แต่อนุญาตให้ดำเนินการได้อย่างรวดเร็วและมีประสิทธิภาพ

pskill -t arcmap.exe

ฉันได้รับกระบวนการที่มองไม่เห็น arcmap.exe หลายครั้งต่อสัปดาห์เมื่อเร็ว ๆ นี้ไม่บ่อยนักมาก่อน แต่มันก็เกิดขึ้นมาระยะหนึ่งแล้ว ฉันมักจะใช้ใบอนุญาตพร้อมกัน ดูเหมือนว่าจะเกิดขึ้นบ่อยครั้งเมื่อฉันมีเซสชัน Arcmap มากกว่าหนึ่งเซสชัน เราใช้โปรแกรมป้องกันไวรัส Sophos บน 64bit Win7

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.