Kesintiye Uğrayabilen Kütüphane Desteği
Genel Bakış
Aspose.Slides, serileştirme, deseralize etme ve renderleme gibi uzun süren sunum görevleri için kesintiye uğrayabilen bir işleme mekanizması sağlar. Bu mekanizma InterruptionToken ve InterruptionTokenSource sınıflarına dayanır.
InterruptionToken, LoadOptions‘a atanabilir ve Presentation yapıcısına geçirilebilir. InterruptionTokenSource::Interrupt() çağrıldığında, ilgili uzun süren görev kesintiye uğrar.
Kesintiye Uğrayabilen Kütüphane
Aspose.Slides 18.4 sürümünde InterruptionToken ve InterruptionTokenSource sınıflarını tanıttık. Bu sınıflar, serileştirme, deseralize etme ve renderleme gibi uzun süren görevleri kesintiye uğratmanıza olanak tanır.
- InterruptionTokenSource , ILoadOptions::set_InterruptionToken’a geçirilen token(ler)in kaynağıdır.
- ILoadOptions::set_InterruptionToken ayarlandığında ve LoadOptions örneği Presentation yapıcısına geçirildiğinde, InterruptionTokenSource::Interrupt() çağrısı o Presentation ile ilişkilendirilmiş herhangi bir uzun süren görevi kesintiye uğratır.
Aşağıdaki kod parçacığı, çalışan bir görevin nasıl kesintiye uğratılacağını gösterir:
void Run(Action<SharedPtr<IInterruptionToken>> action, SharedPtr<IInterruptionToken> token)
{
auto threadFunction = std::function<void()>([&action, &token]() -> void
{
action(token);
});
auto thread = System::MakeObject<Threading::Thread>(threadFunction);
thread->Start();
}
void Run()
{
String dataDir = GetDataPath();
auto function = std::function<void(SharedPtr<IInterruptionToken> token)> ([&dataDir](SharedPtr<IInterruptionToken> token) -> void
{
auto options = System::MakeObject<LoadOptions>();
options->set_InterruptionToken(token);
auto presentation = System::MakeObject<Presentation>(dataDir + u"sample.pptx", options);
presentation->Save(dataDir + u"sample.ppt", Export::SaveFormat::Ppt);
});
auto action = System::Action<SharedPtr<IInterruptionToken>>(function);
auto tokenSource = System::MakeObject<InterruptionTokenSource>();
Run(action, tokenSource->get_Token()); // eylemi ayrı bir iş parçacığında çalıştır
Threading::Thread::Sleep(10000); // zaman aşımı
tokenSource->Interrupt(); // dönüşümü durdur
}
SSS
Aspose.Slides kesinti kütüphanesinin amacı nedir?
Bu, uzun süren işlemleri—sunumları yükleme, kaydetme veya renderleme gibi—tamamlanmadan kesintiye uğratmak için bir mekanizma sağlar. İşlem süresinin sınırlı olması gerektiğinde veya görevin artık gereksiz olduğu durumlarda faydalıdır.
InterruptionToken ve InterruptionTokenSource arasındaki fark nedir?
InterruptionToken, Aspose.Slides API’sine geçirilir ve uzun süren işlemler sırasında kontrol edilir.InterruptionTokenSource, kodunuzda token oluşturmak veInterrupt()çağrısı yaparak kesintileri tetiklemek için kullanılır.
Hangi görevler kesintiye uğrayabilir?
InterruptionToken kabul eden herhangi bir Aspose.Slides görevi—örneğin Presentation(path, loadOptions) ile bir sunumu yüklemek veya Presentation::Save(...) ile kaydetmek—kesintiye uğrayabilir.
Kesinti hemen gerçekleşir mi?
Hayır. Kesinti iş birliğine dayalıdır: işlem periyodik olarak token’ı kontrol eder ve Interrupt() çağrıldığını algıladığı anda durur.
Bir görev zaten tamamlandıktan sonra Interrupt() çağırırsam ne olur?
Hiçbir şey—ilgili görev zaten tamamlanmışsa çağrı hiçbir etki yaratmaz.
Aynı InterruptionTokenSource birden fazla görev için yeniden kullanılabilir mi?
Evet—ancak o kaynakta Interrupt() çağrısından sonra, token’larını kullanan tüm görevler kesintiye uğrar. Görevleri bağımsız yönetmek için ayrı token kaynakları kullanın.