Я могу получить отслеживания стека всех потоков в моем c# приложении?

Swift 3: Вы также можете использовать семафоры на этом пути. Это очень полезно, кроме того, вы можете точно отслеживать, когда и какие процессы будут завершены. Это было извлечено из моего кода:

    //You have to create your own queue or if you need the Default queue
    let persons = persistentContainer.viewContext.persons
    print("How many persons on database: \(persons.count())")
    let numberOfPersons = persons.count()

    for eachPerson in persons{
        queuePersonDetail.async {
            self.getPersonDetailAndSave(personId: eachPerson.personId){person2, error in
                print("Person detail: \(person2?.fullName)")
                //When we get the completionHandler we send the signal
                semaphorePersonDetailAndSave.signal()
            }
        }
    }

    //Here we will wait
    for i in 0..<numberOfPersons{
        semaphorePersonDetailAndSave.wait()
        NSLog("\(i + 1)/\(persons.count()) completed")
    }
    //And here the flow continues...
22
задан Drew Shafer 27 April 2010 в 18:47
поделиться

2 ответа

В CodePlex есть инструмент под названием Managed Stack Explorer (который, я считаю, был создан Microsoft). Он использует API отладки и профилирования для захвата следов стека потоков в работающем приложении .Net без необходимости изменять приложение.

Вы можете запускать ваше приложение, пока не столкнетесь с проблемой, а затем проанализировать ее с помощью этого инструмента, чтобы зафиксировать текущие следы стека всех запущенных потоков. Преимущество этого подхода заключается в том, что вы оставляете свое приложение без изменений (инструментарий может изменить его поведение), и инструмент бесплатный.

6
ответ дан adrianbanks 29 November 2019 в 05:54
поделиться

Я не пробовал это сам, но это может быть полезно http://www.debuginspector.com/

1
ответ дан 29 November 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: