बाधा-सक्षम लाइब्रेरी के लिए समर्थन

परिचय

Aspose.Slides दीर्घकालिक प्रेजेंटेशन कार्यों, जैसे डीसिरियलाइज़ेशन, सिरियलाइज़ेशन, और रेंडरिंग, के लिए एक बाधा योग्य प्रोसेसिंग तंत्र प्रदान करती है। यह तंत्र InterruptionToken और InterruptionTokenSource क्लासों पर आधारित है।

InterruptionToken को LoadOptions को असाइन किया जा सकता है और Presentation कॉन्स्ट्रक्टर को पास किया जा सकता है। जब InterruptionTokenSource::Interrupt() को कॉल किया जाता है, तो संबंधित दीर्घकालिक कार्य बाधित हो जाता है।

बाधा‑सक्षम लाइब्रेरी

Aspose.Slides 18.4 में, हमने InterruptionToken और InterruptionTokenSource क्लासें पेश कीं। ये आपको डीसिरियलाइज़ेशन, सिरियलाइज़ेशन, और रेंडरिंग जैसे दीर्घकालिक कार्यों को बाधित करने की अनुमति देती हैं।

निम्नलिखित कोड स्निपेट चल रहे कार्य को बाधित करने का प्रदर्शन करता है:

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()); // क्रिया को एक अलग थ्रेड में चलाएँ
    Threading::Thread::Sleep(10000);       // समय समाप्ति
    tokenSource->Interrupt();              // रूपांतरण को रोकें
}

अक्सर पूछे जाने वाले प्रश्न

Aspose.Slides बाधा लाइब्रेरी का उद्देश्य क्या है?

यह दीर्घकालिक ऑपरेशनों—जैसे प्रेजेंटेशन को लोड करना, सेव करना, या रेंडर करना—को पूरा होने से पहले बाधित करने का तंत्र प्रदान करता है। यह तब उपयोगी होता है जब प्रोसेसिंग समय सीमित होना चाहिए या कार्य अब आवश्यक नहीं रहता।

InterruptionToken और InterruptionTokenSource में क्या अंतर है?

  • InterruptionToken को Aspose.Slides API को पास किया जाता है और दीर्घकालिक ऑपरेशनों के दौरान जाँच किया जाता है।
  • InterruptionTokenSource को आपके कोड में टोकन बनाने और Interrupt() कॉल करके बाधाएँ प्रारंभ करने के लिए उपयोग किया जाता है।

कौन से कार्य बाधित किए जा सकते हैं?

कोई भी Aspose.Slides कार्य जो InterruptionToken को स्वीकार करता है—जैसे Presentation(path, loadOptions) के साथ प्रेजेंटेशन लोड करना या Presentation::Save(...) के साथ सेव करना—बाधित किया जा सकता है।

क्या बाधा तुरंत होती है?

नहीं। बाधा सहयोगी है: ऑपरेशन नियमित रूप से टोकन की जाँच करता है और जैसे ही यह पता करता है कि Interrupt() को कॉल किया गया है, तुरंत रुक जाता है।

यदि मैं किसी कार्य के पूर्ण होने के बाद Interrupt() कॉल करता हूँ तो क्या होता है?

कुछ नहीं—यदि संबंधित कार्य पहले ही पूर्ण हो चुका है, तो कॉल का कोई प्रभाव नहीं होता।

क्या मैं एक ही InterruptionTokenSource को कई कार्यों के लिए पुनः उपयोग कर सकता हूँ?

हां—लेकिन एक बार जब आप उस स्रोत पर Interrupt() कॉल करते हैं, तो उसके टोकन प्रयोग करने वाले सभी कार्य बाधित हो जाएंगे। कार्यों को स्वतंत्र रूप से प्रबंधित करने के लिए अलग-अलग टोकन स्रोतों का उपयोग करें।