2012-01-27 21 views
5

Geçerli iş parçacığının maksimum yığın boyutunu nasıl bulabilirim?Geçerli iş parçacığının maksimum yığın boyutu .net içinde nasıl bulunur?

MMC UI'den bir işlev yürütürken Powershell'den (komut satırı/konsol) bir yığın taşması istisnası alıyorum. Dolayısıyla, UI iş parçacığında ayrılan varsayılan yığın boyutuyla (Powershell (komut satırı/konsol) arasındaki bir şeyle ilgili bir şey tahmin ediyorum.

Geçerli iş parçacığının maksimum yığın boyutunu nasıl bulabilirim?

Bunları bilmeniz ya da bunları ayarlamanız gerekmez, ancak UI'den değil konsol/powershell'den (komut satırı uygulaması) çalıştığı için yığın boyutuyla ilişkili gibi görünüyor.

Notlar (iplik tür ilişkilidir altında ama soruma cevap yok muhtemelen bazı kurallar verir..)

Maximum Thread Stack Size .NET?

gerçek sorun hakkında daha fazla deails almak için:

StackOverFlowException: Is it programming error (recursion) or not enough maximum default stack size?

cevap

2

Bu bilginin alınması gerçek bir PITA aslında:

  1. Şimdi iplik hakkında bilgi almak için NtQueryInformationThread kullanmak iplik
  2. için bir tanıtıcı elde etmek GetCurrentThreadId
  3. kullanın OpenThread kullanarak evre numarasını alın. THREAD_BASIC_INFORMATION yapısını almak için ThreadBasicInformation'u THREADINFOCLASS olarak kullanırsınız. Artık Konu Çevre Bloğu adresinin adresi olan TebBaseAddress parametresine sahipsiniz.
  4. TebBaseAddress adresindeki işlem belleğini okuyun.
  5. İç Ortam Bloğu (TEB) içinde, aradığınız değer olan StackLimit özelliğine erişiminiz vardır.

3. adımdan, belgesiz. Bu yüzden bu bilgiyi almayı önermiyorum.

1

Windows 8'den GetCurrentThreadStackLimits() işlevi vardır. Böyle PInvoke yoluyla C# kullanabilirsiniz: my makinede

[DllImport("kernel32.dll")] 
static extern void GetCurrentThreadStackLimits(out uint lowLimit, out uint highLimit); 

uint low; 
uint high; 

GetCurrentThreadStackLimits(out low, out high); 
var size = (high - low)/1024; // in KB 

, bu bir web uygulaması (IIS) içinde, bir konsol uygulamasında 256KB 1MB'yi verir.

İlgili konular