2012-09-07 16 views
12

bazı kelimeler için yeterli bellek istisna atar Visual Studio 2010'da .NET 4.0, Office 12 PIA başvuruyor. 150 000'den fazla farklı kelime için, bu bir çekicilik gibi çalışır.get_SynonymInfo ben Thesaurus sözlükten sözcük anlamları almak için Microsoft Word birlikte çalışabilirlik kullanarak basit bir test programı var

Unhandled Exception: System.Runtime.InteropServices.COMException: Insufficient memory or disk space. 
    at Microsoft.Office.Interop.Word.ApplicationClass.get_SynonymInfo(String Word, Object& LanguageID) 
    at WordInteropTest.Program.Main(String[] args) in Program.cs:line 11 

Ben bu kelimeleri bir istisna neden olduğunu biliyoruz:

  • elit (ama işleri "elitleri")
  • yakın
  • Ama bazı kelimeler için, yöntem get_SynonymInfo bir istisna atar fark
  • sokmak
  • tucks
  • onboar yürüyen
  • d
  • Ben belleğini serbest ve düzgün Kelime app çıkın yok, bu istisna ile ilgisi yoktur, ama tam bir kaynak kodunu vermek

dehşete. Test programımdan çıktığımda işlem listesinde msword.exe kalmadı.

 // release memory and quit Word app... (continuing from above) 
     System.Runtime.InteropServices.Marshal.FinalReleaseComObject(synInfo); 
     app.Quit(Word.WdSaveOptions.wdDoNotSaveChanges); 
     System.Runtime.InteropServices.Marshal.FinalReleaseComObject(app); 

Microsoft Word'deki Eş Anlamlılar sözlüğünü el ile kullanarak, tüm sözcükler için uygun sonuçlar verir.

Interop kodunu kullanarak istisnayı nasıl önleyebilirim ve sonuç alabilirim? Başka bir API kullanarak geçerli bir alternatif var mı?


Güncelleme: Bu kod Office 2007 ile Ve benim için sürpriz çalıştığını bir local programming web forum üzerine söylendi, öyle. Ancak bu soruda belirtildiği gibi Office 2010 ve 2013 Önizleme ile, en azından bilgisayarlarımda/VM'lerde çalışmaz. Daha sonra Office 12 yerine Office 14 PIA'yı kullanmaya çalıştım, ancak Office 2013 Preview ile aynı davranıyor.

+1

Word ile uzun süredir devam eden bir sorun gibi görünüyor, çünkü 2013'te hala var (AFAICT). Bu https://groups.google.com/forum/?hl=tr&fromgroups=#!topic/microsoft. public.office.developer.automation/ex58NtYsJmc Excel'i kullanmanızı önerir. – Fionnuala

+0

Hata aynı görünüyor, ancak her iki "iş parçacığı" ve "deflate" bu konuları benim için çalışır. –

+2

Sorun olabileceğini düşündüğüm şey, bütün bu kelimelerin anlamları listesinde homograflara sahip olmasıdır. Örneğin, "elit" ile "en iyi (isim)" ve "en iyi (sıfat)" vardır. SynonymInfo arayüzü her ikisini de temsil edemez. Word 2007 bunu Thesaurus panelinde iki farklı giriş olarak gösterir, ancak Word 2010 ve 2013 Preview, bunu "best (ad/sıfat)" girdisi olarak gösterir. –

cevap

8

Bilgisayarımdaki bu sorunu Word 2010'da yeniden oluşturabilirim. Hata kodu (HResult), internette bulunacak hiçbir şeyin bulunmadığı -2146822464 veya 0x800A16C0'dur.

Remou notları, bu sorun zaten back in 2002 zaten vardı.

Bu Word eşanlamlı liste, iki veya daha fazla tipte bir veya daha fazla eş anlamlı bulunduğu IFF olur (örneğin adj./Hac., n./Hac. veya adj./N.) . Dil/sözlük önemli değil. Örneğin, onboard, wdEnglishUS numaralı hatayı döndürür, ancak wdEnglishUK içinde değil, çünkü sözcük sözcüğü bilmez. Diğer kelimeler her iki sözlükte de vardır ve her iki durumda da bir hata verir.

Görünüşe göre bu bir hatadır ve Word'ün kendisi problemsiz olarak gösterdiği gibi sadece Word interop için bir sorundur. Bulduğum kadarıyla, bu interop'un eşanlamlı bilgi edinebilmesinin tek yoludur ve etrafta çalışma yoktur.

0

MS Word'de 'kötü' kelimelerinizi girip eş anlamlılarını kontrol ederseniz sonuç nedir? Orada çalışıyor mu? API'da iyi ele alınmayan ek bir iletişim kutusu alabilir misiniz?

+1

Güncelleştirmeden önce ikinci satırı okursanız, diyor ki: "Microsoft Word'deki Eşanlamlı Sözlüğün kullanılması, tüm kelimeler için el ile uygun sonuçlar verir." Ek diyaloglar yok. –

İlgili konular