Aracılığıyla paylaş


WF'de Etkinlik Yazma Seçenekleri

.NET Framework 4.6.1, özel etkinlikler oluşturmak için çeşitli seçenekler sağlar. Belirli bir etkinliği yazmak için kullanılacak doğru yöntem, hangi çalışma zamanı özelliklerinin gerekli olduğuna bağlıdır.

Özel Etkinlikler Yazmak için Hangi Temel Etkinlik Sınıfının Kullanılacağına Karar Verme

Aşağıdaki tabloda, özel etkinlik temel sınıflarında kullanılabilen özellikler listelenmiştir.

Temel etkinlik sınıfı Kullanılabilir özellikler
Activity Sistem tarafından sağlanan ve özel etkinliklerden oluşan grupları bileşik bir etkinlikte oluşturur.
CodeActivity Geçersiz kılınabilecek bir Execute yöntem sağlayarak kesinlik temelli işlevler uygular. Ayrıca izleme, değişkenler ve bağımsız değişkenlere de erişim sağlar..
NativeActivity tüm özelliklerinin CodeActivityyanı sıra etkinlik yürütmeyi durdurma, alt etkinlik yürütmeyi iptal etme, yer işaretlerini kullanma ve etkinlikleri zamanlama, etkinlik eylemleri ve işlevleri sağlar.
DynamicActivity aracılığıyla WF tasarımcısı ve çalışma zamanı makineleriyle ICustomTypeDescriptorarabirim oluşturan etkinlikler oluşturmak için DOM benzeri bir yaklaşım sağlar ve yeni türler tanımlamadan yeni etkinliklerin oluşturulmasını sağlar.

Etkinlik Kullanarak Etkinlik Yazma

Diğer mevcut etkinlikleri bir araya getirerek oluşturma işlevinden Activity türetilen etkinlikler. Bu etkinlikler .NET Framework 4.6.1 etkinlik kitaplığındaki mevcut özel etkinlikler ve etkinlikler olabilir. Bu etkinlikleri derlemek, özel işlevsellik oluşturmanın en temel yoludur. Bu yaklaşım genellikle iş akışları yazmak için görsel tasarım ortamı kullanılırken kullanılır.

CodeActivity veya AsyncCodeActivity kullanarak Etkinlik Yazma

veya'dan CodeActivityAsyncCodeActivity türetilen etkinlikler, yöntemini özel kesinlik temelli kodla geçersiz kılarak Execute kesinlik temelli işlevler uygulayabilir. Özel kod, etkinlik çalışma zamanı tarafından yürütülürken yürütülür. Bu şekilde oluşturulan etkinliklerin özel işlevlere erişimi olsa da, yürütme ortamına tam erişim, alt etkinlikleri zamanlama, yer işareti oluşturma veya İptal veya İptal Etme yöntemi desteği gibi çalışma zamanının tüm özelliklerine erişimi yoktur. YürütürkenCodeActivity, yürütme ortamının azaltılmış bir sürümüne (veya AsyncCodeActivityContext sınıfı aracılığıylaCodeActivityContext) erişebilir. kullanılarak CodeActivity oluşturulan etkinliklerin bağımsız değişken ve değişken çözümlemesine, uzantılarına ve izlemesine erişimi vardır. Zaman uyumsuz etkinlik zamanlaması kullanılarak AsyncCodeActivityyapılabilir.

NativeActivity kullanarak Etkinlik Yazma

öğesinden NativeActivitytüretilen etkinlikler, örneğin öğesinden CodeActivitytüretilenler, geçersiz kılarak Executekesinlik temelli işlevler oluşturur, ancak yöntemine Execute geçirilen aracılığıyla iş akışı çalışma zamanının tüm işlevlerine NativeActivityContext de erişebilir. Bu bağlam, alt etkinlikleri zamanlamayı ve iptal etme, yürütme ve ActivityFunc<TResult> nesneleri iptal etmeActivityAction, bir iş akışına işlem akışı yapma, zaman uyumsuz işlemleri çağırma, yürütmeyi iptal etme ve durdurma, yürütme özelliklerine ve uzantılarına ve yer işaretlerine erişim (duraklatılmış iş akışlarını devam ettirmek için tanıtıcılar) desteğine sahiptir.

DynamicActivity kullanarak Etkinlik Yazma

Diğer üç etkinlik türünden farklı olarak, öğesinden DynamicActivity yeni türler türetilerek yeni işlevler oluşturulmaz (sınıf korumalıdır), bunun yerine bir etkinlik belgesi nesne modeli (DOM) kullanarak ve Implementation özelliklerine Properties işlevsellik bir araya getirilerek oluşturulur.

Sonuç Döndüren Yazma Etkinlikleri

Birçok etkinliğin yürütülmesinden sonra bir sonuç döndürmesi gerekir. Bu amaçla bir etkinlikte her zaman özel OutArgument<T> tanımlamak mümkün olsa da, bunun yerine veya Activity<TResult>'den CodeActivity<TResult>NativeActivity<TResult>türetilmiş olması önerilir. Bu temel sınıfların her biri, etkinliğinizin dönüş değeri için kullanabileceği adlı bir OutArgument<T> Result değerine sahiptir. Sonuç döndüren etkinlikler yalnızca bir etkinlikten yalnızca bir sonuç döndürülmesi gerekiyorsa kullanılmalıdır; birden çok sonuç döndürülmesi gerekiyorsa, bunun yerine ayrı OutArgument<T> üyeler kullanılmalıdır.