मैं वीएस2019 यूडब्ल्यूपी सी ++ में एक कार्य बनाने की कोशिश कर रहा हूं। मेरे पास यह बिट कोड है:

IAsyncAction ^frame;
auto frame_task = create_task(frame);
frame_task.then([this]()
    {
        // Noop
    });

मैं जो करना चाहता हूं उसके पास एक अनंत लूप है जो समय-समय पर फ्रेम प्रसंस्करण करता है जहां नोप है। यह कोड संकलित करता है लेकिन फेंकता है और अपवाद का दावा करता है कि यह न्यूल है। शायद मैं लैम्ब्डा के लिए वापसी मूल्य प्रदान नहीं कर रहा हूँ? किसी भी सुझाव का स्वागत है। धन्यवाद

0
Frank Miller 20 नवम्बर 2020, 20:19

1 उत्तर

सबसे बढ़िया उत्तर

यह स्पष्ट नहीं है कि उस संदर्भ में IAsyncAction क्या है। यदि आप कोड का उपयोग कर रहे हैं, तो अपवाद को फेंक दिया जाना है क्योंकि "फ्रेम" नलप्टर है। यदि आप एक साधारण कार्य बनाना चाहते हैं, तो लैम्ब्डा एक्सप्रेशन को सीधे create_task () में डालें।

auto frame_task = create_task([this]()
{
    // Noop
});

... या अन्यथा, यदि आपको IAsyncAction भी प्राप्त करने की आवश्यकता है, तो इसके बजाय create_async() का उपयोग करें और इसे एक कार्य के साथ लपेटें।

IAsyncAction ^frame = create_async([this]()
{
    // Noop
});
auto frame_task = create_task(frame);
0
ardget 21 नवम्बर 2020, 00:28