ฉันทำงานกับแอปพลิเคชันและพบว่าเมื่อเชื่อมต่อระยะไกลผ่าน TeamViewer และ Radmin แอปพลิเคชันค้าง
เมื่อค้าง ไม่มีข้อยกเว้น UI จะไม่ตอบสนองและกระบวนการไม่ค้างในการตรวจสอบทรัพยากรหรือตัวสำรวจกระบวนการ .
ข้อมูลจำเพาะพื้นฐานบางประการสำหรับแอปพลิเคชัน: เชื่อมต่อกับพอร์ต COM 2 พอร์ต หนึ่งอันสำหรับอินพุต หนึ่งอันสำหรับเอาต์พุต เอาต์พุต COM ยังต้องการสัญญาณ Keep ALIVE ทุกๆ 5 วินาที มีเธรดผู้ปฏิบัติงานเบื้องหลัง 4 เธรดที่รันงานต่างๆ ตั้งแต่การอัปเดต UI ไปจนถึงเอาต์พุตเสียงพูด ตลอดจนการจัดการอินพุตข้อมูล UI แสดงข้อมูลแบบเรียลไทม์จากแหล่งข้อมูล 3 แห่งที่แยกจากกัน สองพอร์ตคือพอร์ต COM หนึ่งพอร์ตคือ MS SQL
RDP ไม่แฮงค์แอปพลิเคชันเลย
มีความคิดเห็นเกี่ยวกับสิ่งที่อาจทำให้เกิดสิ่งนี้หรือไม่?
มันทำงานบน .NET 4.5.1 ที่สร้างขึ้นใน VS Ultimate 2013 พร้อมแบ็กเอนด์ SQL 2012
ฉันได้ลองเปลี่ยนระหว่าง 64 บิตและ 32 บิตโดยไม่มีความคืบหน้าเช่นกัน
แก้ไข การตอบกลับ fsintegral
- ลูปทั้งหมดในแอปพลิเคชันสิ้นสุดแต่ถูกเรียกบ่อยมาก ตัวจับเวลาแต่ละตัวมีการทำซ้ำ 1.5 - 5 วินาที และมีบางครั้งที่กระบวนการภายในตัวจับเวลาใช้เวลานานกว่าเวลาขีด ตัวจับเวลาทั้งหมดจะโทรหาผู้ทำงานเบื้องหลังและตรวจสอบ .isBusy ก่อนเริ่มกระบวนการเพื่อหลีกเลี่ยงการทับซ้อนกัน
ตัวจับเวลามีจุดมุ่งหมายให้ทำงานอย่างไม่มีที่สิ้นสุด แต่สิ่งนี้แตกต่างจากการวนซ้ำแบบไม่มีที่สิ้นสุด
มีวิธีตรวจสอบกล่องโต้ตอบที่มองไม่เห็นหรือไม่? ฉันไม่เชื่อว่ามีอยู่จริง แต่ฉันอยากรู้ว่าจะแน่ใจได้อย่างไร
ฉันใช้เวลาส่วนใหญ่ในการเพิ่มประสิทธิภาพเวลาในการโหลดข้อมูลต่อผู้ปฏิบัติงานเบื้องหลัง และลดแต่ละกระบวนการลงเหลือน้อยกว่าหนึ่งวินาทีสำหรับการโหลดข้อมูล มีสองสิ่งที่ทำให้กระบวนการใดกระบวนการหนึ่งทำงานนานขึ้น หนึ่งในนั้นกำลังพูดการแจ้งเตือนโดยใช้ SpeachSynth และอาจใช้เวลานานถึง 60 วินาทีต่อบล็อกโค้ด อีกอันคืออีเมล ซึ่งฉันได้ใส่เข้าไปในกระบวนการอะซิงก์เพื่อป้องกันไม่ให้แอปพลิเคชันหยุดทำงานหากมีการหมดเวลา แต่แอปพลิเคชันค้างแม้ว่าจะไม่ได้ประมวลผลทั้งสองรายการนี้ก็ตาม
เหตุการณ์เรียงซ้อน นี่จะเป็นเหตุการณ์ที่เกิดจากเหตุการณ์อื่นหรือไม่? หากเป็นเช่นนั้น แอปพลิเคชันจะไม่ใช้การดำเนินการประเภทนี้ อย่างไรก็ตาม แอปพลิเคชันจะเรียกใช้โมดูลแยกกันประมาณ 15 โมดูลจากคนงานเบื้องหลังอย่างน้อยหนึ่งคน ฉันไม่เชื่อว่านี่เป็นตัวเลขที่สูงเกินไป แต่แจ้งให้เราทราบหากเป็นเช่นนั้น ฉันสามารถโพสต์โค้ดเทียมได้หากเป็นปัญหา
Application.Sleep() จะไม่ถูกใช้ แต่ Application.DoEvents() จะเกิดขึ้นเมื่อรอเป็นระยะเวลาหนึ่ง
IEDim startTime As Date = Now Dim timePassed As TimeSpan = Now - startTime Do Until timePassed.TotalSeconds > 5 timePassed = Now - startTime Application.DoEvents() Loop
สาเหตุหลักของความคลุมเครือคือฉันหวังว่าปัญหานี้จะทราบกับ TeamViewer หรือ Radmin ตามประเภทของรายการในแอปพลิเคชัน เวอร์ชัน IE SQL, พอร์ต COM และ BW
ขอขอบคุณล่วงหน้า