Aracılığıyla paylaş


Office'te İş Parçacığı Desteği

Bu konuda, iş parçacığının Microsoft Office nesne modelinde nasıl desteklendiği anlatılmaktadır.Office nesne modeli iş parçacığı güvenlikli değildir, fakat Office çözümünde çoklu iş parçacıklarıyla çalışmak mümkündür.Office uygulamaları, Bileşen Nesne Modeli (COM) sunucularıdır.COM, sunucuların rasgele iş parçacıklarında COM sunucularını çağırmasına izin verir.İş parçacığı güvenliği olmayan COM sunucuları için COM, herhangi bir zamanda sadece bir tane mantıksal iş parçacığının sunucuda çalışması amacıyla eş zamanlı çağrıları seri hale getirecek bir mekanizma sağlar.Mekanizma, tek iş parçacıklı grup (STA) modeli olarak bilinir.Çağrılar seri hale geldiği için, sunucu meşgulken veya arka plan iş parçacığında başka çağrılarle ilgilenirken, araanlar bazı zamanlarda engellenebilirler.

Uygulama hedefi: Bu konudaki bilgiler, Office 2013 ve Office 2010 için belge düzeyi projeler ve uygulama düzeyi projelere yöneliktir. Daha fazla bilgi edinmek için, bkz. Office Uygulaması ve Proje Türüne Göre Kullanılabilir Özellikler.

Çoklu İş Parçacıkları Kullanırken Gerekli Olan Bilgi

Çoklu iş parçacıklarıyla çalışmak için, çoklu iş parçacığı kullanım yönleri hakkına en azından aşağıdaki temel bilgilere sahip olmanız gerekmektedir:

  • Windows API

  • COM çoklu iş parçacığı kavramları

  • Eşzamanlılık

  • Eşitleme

  • Hazırlama

Çoklu iş parçacığı kullanımı hakkında genel bilgi için bkz. Bileşenlerde Çoklu İş Parçacığı Kullanımı

Office, ana STA'de çalışır.Bunun etkilerini anlamak, Office ile çoklu iş parçacıklarının nasıl kullanıldığını anlamaya olanak sağlar.

Temel Çoklu İş Parçacığı Kullanımı Senaryoları

Office çözümlerindeki kodlar her zaman ana UI iş parçacığında çalışır.Arka plan iş parçacığında ayrı bir görev çalıştırarak uygulama başarımını yumuşatmak isteyebilirsiniz.Hedef, daha yumuşak bir yürütmeye neden olması gereken (çoklu iş parçacıkları kullanmanın ana nedeni), bir görevden sonra diğerini yapmak yerine iki görevi aynı anda bitirmektir.Örneğin, ana Excel UI iş parçacığında olay kodunuz olabilir ve arka plan iş parçacığında sunucudan veri alan ve Excel UI'daki hücreleri sunucudan gelen veriyle dolduran bir görev çalıştırabilirsiniz.

Office Nesne Modeline Çağrılan Arka Plan İş Parçacıkları

Arka plan iş parçacığı Office uygulamasına bir çağrı yaptığında, çağrı otomatik olarak STA sınırına çapraz sıralanır.Fakat, arka plan iş parçacığı arama yaptığı anda Office uygulamasının onunla ilgileneceğinin garantisi yoktur.Çeşitli nedenleri olabilir:

  1. Office uygulaması, girmek için bir şansa sahip olmak amacıyla iletileri göndermelidir. Eğer durmadan ağır işlemeler yapıyorsa, bu zaman alabilir.

  2. Eğer başka bir mantıksal iş parçacığı gruptaysa, yeni iş parçacığı giremez.Bu sıklıkla mantıksal iş parçacığı Office uygulamasına girdiğinde ve arayanın grubuna yeniden kullanılabilir bir geri arama yapar.Uygulama, o çağrının geri dönmesi için engellenir.

  3. Excel, gelen çağrılara hemen cevap veremeyecek bir durumda olabilir.Örneğin, Office uygulaması kalıcı iletişim görüntülüyor olabilir.

2 ve 3 olasılıkları için, COM IMessageFilter arayüzünü sağlar.Eğer sunucu bunu uygularsa, tüm çağrılar HandleIncomingCall yöntemine girer.2 olasılığı için, çağrılar otomatik olarak reddedilir.3 olasılığı için, sunucu duruma bağlı olarak çağrıyı reddedebilir.Eğer çağrı reddedilirse, arayan ne yapılacağına karar vermelidir.Normalde, RetryRejectedCall yöntemiyle reddedilmenin bildirildiği durumlarda, arayan IMessageFilter'ı uygular.

Fakat, Visual Studio'daki Office geliştirme araçları kullanılarak oluşturulan çözümlerde, COM ile birlikte çalışma, tüm reddedilen çağrıları COMException'na dönüştürür ("İleti süzgeçi uygulamanın meşgul olduğunu belirtir").Arka plan iş parçacığında nesne modeli çağrısı yaptığınızda, bu aykırı durumla başa çıkmak için hazırlıklı olmalısınız.Genellikle, bu belli bir zaman için yeniden denemeyi ve sonra bir iletişim görüntülemeyi içerir.Fakat, STA olarak da arka plan iş parçacığı oluşturabilir ve bu durumla ilgilenmesi için ileti süzgeçine o iş parçacığı için kaydolabilirsiniz.

İş Parçacığını Doğru Başlatma

Yeni bir STA iş parçacığı oluşturduğunuzda, iş parçacığını çalıştırmadan önce grup durumunu STA'ye ayarlayın.Aşağıdaki kod örneğinde bunun nasıl yapıldığı gösterilmiştir.

Dim t As New System.Threading.Thread(AddressOf AnObject.aMethod)

t.SetApartmentState(System.Threading.ApartmentState.STA)
t.Start()
System.Threading.Thread t = new System.Threading.Thread(AnObject.aMethod);

t.SetApartmentState(System.Threading.ApartmentState.STA);
t.Start();

Daha fazla bilgi için bkz. Yönetilen İş Parçacığı Oluşturma En İyi Yöntemleri.

Kalıcı Olmayan Formlar

Kalıcı olmayan bir form, form görüntülendiğinde uygulama ile bazı tür etkileşimlere izin verir.Kullanıcı form ile etkilşime girer ve form uygulama kapanmadan onunla etkileşime geçer.Office nesne modeli yönetilen, kalıcı olmayan formları destekler, fakat onlar arka plan iş parçacığında çalışmamalıdırlar.

Ayrıca bkz.

Diğer Kaynaklar

Bileşenlerde Çoklu İş Parçacığı Kullanımı

Yönetilen İş Parçacığı Oluşturma

İş Parçacığı Oluşturma (C# ve Visual Basic)

İş Parçacıkları ve İş Parçacığı Oluşturmayı Kullanma

Office Çözümleri Tasarlama ve Oluşturma