Makale numarası: 824480 - Son Gözden Geçirme: 05 Ocak 2006 Perşembe - Gözden geçirme: 2.0

Hata: "HRESULT - 0x80010106" Visual Studio. NET'te Visual C++ yönetilen uygulamayı çalıştırdığınızda, hata oluşur.

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Bileşen Nesne Modeli (COM) başlatma ana iş parçacığı üzerinde bulunan bir C++ yönetilen uygulama'nı çalıştırmayı denediğinizde, çalıştırma sırasında aşağıdaki hata iletisini de alabilirsiniz:
HRESULT:-0x80010106-, onu ayarlandıktan sonra iş parçacığı modunu değiştirme başlatılamıyor.

Neden

Ana iş parçacığında Grup durumunu ayarlama, güvenilir değil.

Çözüm

Ana işlevi gerçek yönetilen giriş noktası değil. C çalışma zamanı kitaplıkları (CRT) giriş noktası gerçek yönetilen bir giriş noktasıdır. Bu sorunu gidermek için <a0></a0>, yönetilen giriş noktası yazma ve el ile CRT gibi başlatılamıyor:
#define _WIN32_WINNT 0x501
#include <objbase.h>
#include <stdio.h> 

#using <mscorlib.dll>
using namespace System;

extern "C" void mainCRTStartup();

[System::STAThread]
int mymain()  //the new entry point
{
	//Initialize COM
	HRESULT hr = CoInitialize(0);
	
	//Initialize the CRT
	mainCRTStartup();
	//uninit
	CoUninitialize();
	return 0;
}
 

int main()
{
	/*
   Do the application work 
   that you would do in your main thread
   */
}
Açıkça mymain işlevine giriş noktası belirtin. Bunu yapmak için şu adımları izleyin:
  1. Project ' i tıklatın ve sonra da Properties ' i tıklatın.
  2. Özellik sayfaları iletişim kutusunda, Yapılandırma özellikleri altında Bağlayıcısı ' nı genişletin ve sonra Gelişmiş ' i seçmek için tıklatın.
  3. Giriş noktası metin kutusuna mymain yazın ve Tamam ' ı tıklatın.

Durum

Microsoft, bunun bu makalenin başında listelenen Microsoft ürünlerinde bir hata olduğunu onaylamıştır.

Daha fazla bilgi

Ortak dil çalışma zamanı, Bileşen Nesne Modeli (COM) kullanıcının uygulamaya başlamadan önce her zaman kullanmalısınız, common language runtime parçacıklı (MTA) için ana iş parçacığı başlatılamıyor Coınitializeex yöntemini ça??r?r. Ancak, ortak dil çalışma zamanı, yalnızca gerektiği gibi Coınitializeex yöntemini çağırır. Common language runtime deterministic değil. Genellikle, ana iş parçacığı için bir tek iş parçacıklı grup (STA) gerektiren uygulamalar, giriş noktası STAThread özniteliği yerine uygulamalısınız. Ayrıca, kullanıcı girişi C++ ile (ana yöntem ve türevleri) işaret bir doğru yönetilen giriş noktası değil. C çalışma zamanı kitaplıkları windows uygulamaları ve konsol uygulamaları için giriş noktaları sağlayın.

1 Davranışı yeniden oluşturma adımları

  1. Microsoft Visual Studio .NET 2003 başlatın.
  2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
  3. Visual C++ ProjectsProject Types altında''nı genişletin, MFC ' ı tıklatın ve şablonları altında MFC uygulaması ' ı tıklatın.
  4. MFCTestadı metin kutusuna yazın, C:\Location</a1> metin kutusuna yazın ve Tamam ' ı tıklatın.
  5. MFC uygulaması sihirbazında, Bileşik belge destek ' i tıklatın.
  6. Bileşik belge destek altında kapsayıcı/tam sunucusunu tıklatıp seçin ve sonra da <a2>son</a2>'u tıklatın.
  7. Solution Explorer'da (Çözüm Gezgini), MFCTest ' ı sağ tıklatın ve sonra da Properties ' i tıklatın.
  8. Özellik sayfaları iletişim kutusunda, C/C++ altında Yapılandırma özellikleri ' ni genişletin.
  9. Hata ayıklama bilgileri biçim ayarlama özelliğini devre dışı.
  10. Code Generation ' nı genişletin ve sonra da aşağıdaki özellikleri ayarlayın:
    • VarsayılanÇalışma zamanı temel çekleri özelliğini ayarlayın.
    • The Etkinleştir, en az Rebuild ayarlama özelliğini Hayır.
  11. Komut satırı ' nı genişletin ve sonra yazın / clr <a0>Ek seçenekler</a0> metin kutusuna.
  12. Uygula ' yı tıklatın ve sonra da Tamam ' ı tıklatın.
  13. Uygulamayı oluşturun.
  14. Hata Ayıkla) menüsünde, uygulama hata ayıklamak için Başlat ' ı tıklatın. Bu makalenin "Belirtiler" bölümünde açıklanan hata iletisini alabilirsiniz.

2 Davranışı yeniden oluşturma adımları

  1. Visual Studio .NET 2003 başlatın.
  2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
  3. Visual C++ ProjectsProject Types altında''nı genişletin, .NET ' i tıklatın ve şablonları altında Console Application (.NET)'ı tıklatın.
  4. TestProjectadı metin kutusuna yazın, C:\Location</a1> metin kutusuna yazın ve Tamam ' ı tıklatın.
  5. Solution Explorer'da (Çözüm Gezgini), TestProject.cpp çift tıklatın ve sonra da varolan kodu aşağıdaki kodla değiştirin: <a1>
    #include "stdafx.h"
    #define _WIN32_WINNT 0x501 
    #include <objbase.h>
    #include <stdio.h> 
    
    #using <mscorlib.dll>
    using namespace System;
    
    int main()
    
    {
    	HRESULT hr = CoInitialize(0);
    	printf("hr in main thread is %d \n",hr);
    }
  6. Oluşturun ve sonra projeyi çalıştırın. Bu makalenin "Belirtiler" bölümünde açıklanan çalışma zamanı hatası alabilirsiniz.
Bu sorun, aşağıdaki senaryolarda altında uygulamaları C++ yönetilen içinde de oluşabilir:
  • Uygulama STA için ana iş parçacığı başlatılamıyor Coınitializeex yöntemi zaman çağırmalısınız
  • Ne zaman kullanarak MFC tabanlı OLE uygulamaları derlemek / clr seçeneği.
  • Bir Sihirbazı tarafından oluşturulan Windows Forms uygulaması çalıştırdığınızda.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ .NET 2003 Standard Edition
Anahtar Kelimeler: 
kbmt kberrmsg kbthread kbcodegen kbcrt kbappwizard kbbug KB824480 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:824480  (http://support.microsoft.com/kb/824480/en-us/ )