Waitforexistence
تحليل Waitforexistence
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
كيفية الانتظار حتى File. Exists؟
لدي التطبيق، والاستماع لملف *.log في مجلد المختار. لقد استخدمت فلسيستيمواتشر.
لكن هناك مشكلة. التطبيق الآخر المسؤول عن جعل هذا الملف يأخذ الخطوات التالية:
جعل ملف. gz فكه إلى ملف تكست (بعض اسم ملف عشوائي) تغيير *.txt اسم إلى واحد صحيح مع *.log ملحق.
ولا أستطيع تغيير هذا السلوك.
لذلك أنا جعلت 2 فيلزيستمواتشر s ل *.gz، و * ملفات. txt. لماذا ا؟ لأن هذا التطبيق في بعض الأحيان لا فك ملف غز، وأحيانا لا إعادة تسمية ملف تكست إلى ملف *.log النهائي.
FileSystemWatcher2 المصيد ملف تكست، ثم (في معظم الحالات يتم إعادة تسميته لتسجيل الدخول في 1000ms التالية) ولست بحاجة إلى الانتظار بعض الوقت للتحقق مما إذا كان ملف تكست موجود (إن لم يكن، يبدو أن إعادة تسميته إلى ملف *.log النهائي) .
والسؤال هو، وكيفية التحقق مما إذا كان الملف موجود دون الموضوع. النوم () لمنع تجميد أوي؟
آمل أن يكون واضحا، إن لم يكن سأحاول وصفه بشكل أفضل. وأعتقد أن هذه مشكلة معقدة.
بعض نماذج التعليمات البرمجية:
مراقب ملف غز:
مراقب ملف تكست:
في الواقع فلزيستمواتشر خلق الحدث يسمى في موضوع منفصل في حد ذاته .. لذلك أساسا تحتاج إلى القيام بأي شيء على الاطلاق. الرمز الخاص بك على ما يرام كما هو.
هنا هو الدليل:
يمكنك استخدام باكغروندوركر لمراقبة نظام الملفات - وتجنب تجميد واجهة المستخدم الخاصة بك.
يمكنك استخدام النوم دون تأمين مؤشر ترابط واجهة المستخدم، كنت أساسا النوم مؤشر ترابط منفصل.
ثم استدعاء هذا على النحو التالي:
أو كما ذكر في آخر آخر استخدام باكغروندوركر بدلا من موضوع منفصل، ووضع رمز ذكرته في العمل والاستماع للحدث أونفينيش ولكن رؤية كما ليس هناك الكثير من العمل للقيام إما طرق على ما يرام.
Страница.
Пользователь.
تعريفات الخدمة، رسائل الطلب ورسائل الاستجابة.
يتم تعريف خدمات روس بواسطة ملفات سرف التي تحتوي على رسالة طلب ورسالة استجابة. هذه هي مطابقة للرسائل المستخدمة مع مواضيع روس (انظر نظرة على رسالة روسب). يقوم روسكب بتحويل هذه الملفات سرف إلى شفرة المصدر C ++ ويخلق ثلاث فئات تحتاج إلى أن تكون على دراية: تعريفات الخدمة، رسائل الطلب، ورسائل الاستجابة. أسماء هذه الفئات تأتي مباشرة من اسم الملف سرف:
بنية ولدت مولد خدمة روسبب يولد هيكل مثل هذا:
توفر فئة الطلب الإدخال للخدمة. يتم إرجاع فئة الاستجابة إلى العميل كإخراج الخدمة.
إنشاء طلب الخدمة / الردود.
هناك نسختان من أي طريقة استدعاء خدمة: أحدهما يأخذ، على سبيل المثال، هيكل فو الموضح أعلاه، وواحد يأخذ كائنات طلب واستجابة منفصلة. ملء إما هو بسيط جدا. لاستخدام هيكل فو نفسه:
خدمات الاتصال.
هناك طريقتان لاستدعاء خدمة في روشب، "مقبض" الطريق والطريقة "العارية".
للراحة، توفر مساحة الاسم روس :: خدمة طريقة الاتصال، والتي لا تتطلب إنشاء نودهاندل:
توفر مساحة الاسم روس :: خدمة بعض وظائف الراحة مثل موجود () و ويتفورسرفيس (). راجع روس :: مستندات أبيس مساحة اسم الخدمة لمزيد من المعلومات.
طريقة مقبض يعمل أكثر مماثلة لكيفية عمل بقية روسب، في أن يتم إرجاع روز :: سيرفيسكلينت الذي يستخدم بعد ذلك لاستدعاء الخدمة:
روز :: سيرفيسكلينت لديها أيضا عدد من الأساليب المفيدة الأخرى مثل موجود () و ويتفوريكسيستانس (). راجع مستندات روس :: سيرفيسكلينت أبي للحصول على مزيد من المعلومات.
اتصالات مستمرة.
كما يسمح روس بالتواصل المستمر مع الخدمات. مع اتصال مستمر، يبقى العميل متصلا بخدمة. وإلا، يقوم العميل عادة بالبحث ويعيد الاتصال بخدمة ما في كل مرة. قد يسمح هذا لعميل الاتصال عقدة مختلفة في كل مرة يقوم فيها استدعاء خدمة، على افتراض أن البحث إرجاع عقدة مختلفة.
وينبغي استخدام الاتصالات الثابتة بعناية. أنها تحسن كثيرا الأداء للطلبات المتكررة، ولكنها أيضا جعل العميل أكثر هشاشة لفشل الخدمة. يجب على العملاء الذين يستخدمون الاتصالات المستمرة تنفيذ منطق إعادة الاتصال الخاصة بهم في حالة فشل الاتصال المستمر.
يمكنك إنشاء اتصال مستمر باستخدام الوسيطة الثانية الاختيارية إلى روس :: نودهاندل :: سيرفيسكلينت ():
ملاحظة: مع استمرار الخدمات، يمكنك معرفة ما إذا فشل الاتصال عن طريق اختبار المقبض:
روز :: سيرفيسكلينت مقابض يتم عد مرجع داخليا، بحيث يمكن نسخها مرة واحدة يتم تدمير النسخة الأخيرة سوف الاتصال المستمر إسقاط. يمكنك أيضا إيقاف تشغيل الاتصال يدويا باستخدام طريقة روس :: سيرفيسكلينت :: شوتون ().
تقديم خدمات.
في روسب تقدم خدمة من خلال خلق روز :: سيرفيسزرفر من خلال روس :: نودهاندل :: أدفيرتيسيرفيس () الأسلوب. يعمل أدفرتيسرفيس () بشكل مشابه جدا لكيفية عمل طريقة الاشتراك ()، حيث تقوم بتقديم اسم خدمة واستدعاء يتم استدعاؤه عند استدعاء الخدمة.
هناك عدد من إصدارات مختلفة من أدفرتيسيرفيس ()، لأنواع مختلفة من الاستدعاءات، ولكن التوقيع العام هو:
مريق [عادة غير ضروري] هذا هو وسيطة قالب تحدد نوع رسالة الطلب. بالنسبة لمعظم الإصدارات لا تحتاج إلى تعريف هذا بشكل صريح، كما يمكن للمترجم استنتاج من وظيفة رد الاتصال.
مريس [عادة غير ضرورية] هذا هو وسيطة قالب تحدد نوع رسالة الاستجابة. بالنسبة لمعظم الإصدارات لا تحتاج إلى تعريف هذا بشكل صريح، كما يمكن للمترجم استنتاج من وظيفة رد الاتصال.
الخدمة اسم الخدمة المقدمة.
توقيع معاودة الاتصال.
التوقيع على رد الخدمة هو:
حيث يتطابق مريق و مريس مع أنواع الطلب / الاستجابة المقدمة إلى أدفرتيسيرفيس (). قيمة العودة من صحيح يعني نجحت الخدمة، وقد تم تعبئة كائن الاستجابة مع البيانات اللازمة. قيمة عودة كاذبة يعني فشل المكالمة ولن يتم إرسال كائن الاستجابة إلى المتصل.
أنواع معاودة الاتصال.
يدعم روسكب أي رد الاتصال بدعم من دفعة :: وظيفة: أساليب فئة الوظائف.
وظائف هي أسهل للاستخدام:
طرق الفئة.
أساليب الصف هي أيضا سهلة، على الرغم من أنها تتطلب معلمة إضافية:
كائنات فونكتور.
كائن فونكتور هو فئة تعلن المشغل ()، على سبيل المثال:
A فونكتور تمريرها إلى أدفرتيسرفيس () يجب أن تكون قابلة للنسخ. فو فونكتور يمكن استخدامها مع أدفرتيسرفيس () مثل ذلك:
ملاحظة: عند استخدام كائنات فونكتور يجب أن تحدد بشكل صريح أنواع الطلب والرد على أنها وسيطات قالب، لأن برنامج التحويل البرمجي لا يمكن استنتاجها في هذه الحالة.
رؤوس اتصال الخدمة.
رؤوس الاتصال هي سمة من سمات كل من مواضيع روس وخدمات روس التي تمكن من إرسال بيانات تعريف إضافية عند إجراء الاتصال الأولي بين عقدتين. يستخدم روس هذه الرؤوس لتمرير في المعلومات الأساسية مثل كاليريد من العميل ربط.
في حالة الخدمات، يمكن تخصيص هذه الميزة لتنفيذ ميزات متقدمة مثل "الجلسات" (على سبيل المثال ملفات تعريف الارتباط). يمكن لعملاء الخدمات إرسال بيانات وصفية إضافية خاصة بهم، مثل معرف للربط مع الطلب.
على جانب العميل، يمكنك تمرير ستد :: خريطة & لوت؛ ستد :: سلسلة، ستد :: سلسلة & غ؛ إلى الوردية :: نودهاندل :: سيرفيسكلينت () كوسيلة الثالثة:
على جانب الملقم يحتوي كائن الطلب على حقل __connection_header، وهو مؤشر إلى ستد :: ماب & لوت؛ ستد :: سترينغ، ستد :: سترينغ & غ؛ .
ويكي: روسب / نظرة عامة / الخدمات (последним исправлял пользователь جوناثانبوهرن 2012-03-14 15:35:24)
الموضوع مثبت ويتفوريكسستانس.
أريد أن أعرف لماذا ويتفوريكسستانس لا تعمل على بروسستيستوبجيكت.
أفعل ما يلي:
بروسيستيستوبجيكت تيستوبجيكت = ستارتاب (config. getApplicationName ())؛
عند تشغيل البرنامج النصي يحدث استثناء، لأنه لم يتم العثور على زر = & غ؛ التطبيق غير محملة بالكامل.
اعتقدت انني يمكن استخدام ويتفوريكسيستانس بدلا من النوم (3)
ري: ويتفوريكسستانس.
هم لديك طريقة مضحكة لطرح الأسئلة .. انها أشبه بيان؛) على أي حال هنا تذهب ±
waitForExistence.
ري: ويتفوريكسستانس.
مرحبا هو تطبيق ويب؟
ري: ويتفوريكسستانس.
مركولك 270003CDF9 & # x200f؛ 2013-09-17T13: 45: 32Z.
مرحبا هو تطبيق ويب؟
لا، تطبيق جافا.
ري: ويتفوريكسستانس.
هم لديك طريقة مضحكة لطرح الأسئلة .. انها أشبه بيان؛) على أي حال هنا تذهب ±
waitForExistence.
ري: ويتفوريكسستانس.
Y5QY_gerben_delange 270004Y5QY & # x200f؛ 2013-09-17T13: 49: 03Z.
هم لديك طريقة مضحكة لطرح الأسئلة .. انها أشبه بيان؛) على أي حال هنا تذهب ±
waitForExistence.
هم، أنا باستخدام الإصدار 8.
في الوثيقة هناك معلومات أخرى في ويتفوريكسستانس ():
ويتفوريكسستانس (دوبل maxim_find_object_time، دوبل find_object_wait_between_retry)
انتظر وجود الكائنات.
testObject. waitForExistence (10،1)؛ لا تنتظر الحد الأقصى للوقت من 10 ثانية.
ري: ويتفوريكسستانس.
ميشو 270006NA53 & # x200f؛ 2013-09-17T14: 08: 24Z.
هم، أنا باستخدام الإصدار 8.
في الوثيقة هناك معلومات أخرى في ويتفوريكسستانس ():
ويتفوريكسستانس (دوبل maxim_find_object_time، دوبل find_object_wait_between_retry)
انتظر وجود الكائنات.
testObject. waitForExistence (10،1)؛ لا تنتظر الحد الأقصى للوقت من 10 ثانية.
من الصفحة يشير الرابط الذي قمت بتوريده للتو إلى:
وصف التفاصيل: عادة، ينتظر حتى وجود كائن، ولكن لعملية هذا الواقع أبدا ينتظر. إذا كانت العملية لا توجد الآن، فإنه لن. يلقي استثناء إذا تم إنهاء العملية. لا يتم اعتماد أساليب راتيونالتستسكريبت أونوبجكتنوتفوند.
ري: ويتفوريكسستانس.
Y5QY_gerben_delange 270004Y5QY & # x200f؛ 2013-09-17T14: 12: 41Z.
من الصفحة يشير الرابط الذي قمت بتوريده للتو إلى:
وصف التفاصيل: عادة، ينتظر حتى وجود كائن، ولكن لعملية هذا الواقع أبدا ينتظر. إذا كانت العملية لا توجد الآن، فإنه لن. يلقي استثناء إذا تم إنهاء العملية. لا يتم اعتماد أساليب راتيونالتستسكريبت أونوبجكتنوتفوند.
أوه، نعم، أنت حيث يمين :)
وسوف تستخدم النوم بدلا من ويتفوريكسستانس.
ري: ويتفوريكسستانس.
ميشو 270006NA53 & # x200f؛ 2013-09-17T14: 19: 35Z.
أوه، نعم، أنت حيث يمين :)
وسوف تستخدم النوم بدلا من ويتفوريكسستانس.
أعتقد أن النوم هو فكرة سيئة لأنه إذا لم يفتح التطبيق في غضون ذلك الوقت أنت ذاهب للحصول على نفس الخطأ.
لذا فإن الحل هو استخدام هذا.
System. out. println ("فوند إيت نوت")؛
هذا سوف يضمن لك أن السيناريو سوف تنتظر حتى يفتح.
ري: ويتفوريكسستانس.
مرحبا، هل حاولت زر (). ويتفوريكسيستانس ()؟
ري: ويتفوريكسستانس.
مركولك 270003CDF9 & # x200f؛ 2013-09-17T18: 32: 05Z.
أعتقد أن النوم هو فكرة سيئة لأنه إذا لم يفتح التطبيق في غضون ذلك الوقت أنت ذاهب للحصول على نفس الخطأ.
لذا فإن الحل هو استخدام هذا.
System. out. println ("فوند إيت نوت")؛
هذا سوف يضمن لك أن السيناريو سوف تنتظر حتى يفتح.
هذه حلقة رهيبة .. النفايات بعيدا إلى الكثير من موارد النظام وربما لا حصر له عندما الكائن سوف أبدا إكسيست. الثابتة بالنسبة لك:
ري: ويتفوريكسستانس.
Y5QY_gerben_delange 270004Y5QY & # x200f؛ 2013-09-18T15: 33: 27Z.
هذه حلقة رهيبة .. النفايات بعيدا إلى الكثير من موارد النظام وربما لا حصر له عندما الكائن سوف أبدا إكسيست. الثابتة بالنسبة لك:
أنا فقط قدم له النهج كيفية التعامل مع هذا الوضع.
إذا كنت قلق بشأن الإطار الزمني فقط إضافة رمز لالتقاط الوقت ووضع رمز انتهاء الصلاحية.
ما هو الفرق بين التعليمات البرمجية وجود الانتظار لمدة 60 ثانية. إذا كان لديك سطر واحد من التعليمات البرمجية التي تفعل ذلك لماذا استخدام رمز طويل.
في هذه الحالة التعليمات البرمجية الخاصة بك هو استخدام أقل.
كان بلدي التعليمات البرمجية لتوفير له نهجا ليس حلا.
آسف على الجملة القاسية.
ري: ويتفوريكسستانس.
مركولك 270003CDF9 & # x200f؛ 2013-09-18T16: 56: 40Z.
أنا فقط قدم له النهج كيفية التعامل مع هذا الوضع.
إذا كنت قلق بشأن الإطار الزمني فقط إضافة رمز لالتقاط الوقت ووضع رمز انتهاء الصلاحية.
ما هو الفرق بين التعليمات البرمجية وجود الانتظار لمدة 60 ثانية. إذا كان لديك سطر واحد من التعليمات البرمجية التي تفعل ذلك لماذا استخدام رمز طويل.
في هذه الحالة التعليمات البرمجية الخاصة بك هو استخدام أقل.
كان بلدي التعليمات البرمجية لتوفير له نهجا ليس حلا.
آسف على الجملة القاسية.
أنا فقط قدم له النهج كيفية التعامل مع هذا الوضع.
كان بلدي التعليمات البرمجية لتوفير له نهجا ليس حلا.
حسنا ثم ش يمكن أن يكون ذلك أكثر وضوحا قليلا. إذا كنت تقول "حتى الحل هو استخدام هذا"، قد يحصل الناس الخلط.
ما هو الفرق بين التعليمات البرمجية وجود الانتظار لمدة 60 ثانية.
ويتفوريكسستانس باطل ()، رمز بلدي 'إرجاع' منطقية.
آسف على الجملة القاسية.
لا مشاعر صعبة، ربما كنت قليلا وقحا في الرد الأخير.
الموضوع: أود بهافيور فور. WaitForExistence ()
أدوات الموضوع.
البحث في الموضوع.
تبديل الوضع الخطي إلى الوضع المختلط التبديل إلى وضع الخيوط.
السلوك الغريب ل. WaitForExistence ()
[ديتايلز] لوكينغ فور [تكستغيتستوبجيكت (نيم: Text_TxtB_Color، ماب: txtB_Color)] ويث ستات [إنابلد | فيسيبل | ريدي]، فيلابل فيلينغ كانديديت [.classindndex: 1،.name: تكستنوتابليدكولور،.title:،.id:،. تايب: تكست] مع حالة غير صحيحة [ديزابلد]
الحل الجزئي.
أود معرفة ما إذا كان أي شخص آخر يستخدم فايرفوكس قادرا على استخدام. WaitForExistence () في ظل الشروط المعمول بها (بمعنى أن عنصر التحكم قيد الفحص معطل).
كما يمكنك يرجى تقديم تتبع استثناء لفايرفوكس كذلك.
وفي هذه الحالة بالذات، فإن الوقت ليس كبيرا. أنا خلقت عينة صفحة ويب لاستخدامها كاختبار لهذا الشذوذ. صفحة الويب وجميع كائناتها موجودة ومتوفرة حتى أعرف ل 100٪ اليقين أنه يجب العثور على الكائن. في عيني، الكائن هناك ولكن يتم تعيين إحدى السمات وفقا لذلك: ممكن = خطأ أو معطل = صحيح، اعتمادا على كيف ينظر إليها بواسطة رفت. وعلاوة على ذلك، في هذا المثال، كان توقيت مرمزة: 10 ثانية، 2 تأخير الثانية بين المحاولة.
راجع النشر الأول في سلسلة المحادثات هذه.
ربما ولكن أنا بحاجة إلى شخص للمساعدة في دعم هذه المعلومات.
تم استخدام نفس التعليمات البرمجية لكل من إي وفايرفوكس. لأن لدي لدعم اثنين من المتصفحات، وأنا اختبرت على حد سواء. لقد فوجئت لرؤية بعض الاختلافات في النتيجة. توقعاتي كانت أن نفس القانون كان يعمل على كل من المتصفحات.
لا يتوفر حل بديل، اعتبارا من هذا النشر.
الكلمات الدلالية لهذا الموضوع.
ضوابط النشر.
لا تستطيع إضافة مواضيع جديدة لا تستطيع الرد على المواضيع لا تستطيع إرفاق ملفات لا تستطيع تعديل مشاركاتك.
كود كود إس أون الابتسامات متاحة كود [إمغ] متاحة [فيديو] الكود هو رمز هتمل معطلة.
الموارد المحفوظة في هذه الصفحة: ميسكل 12.00٪
ديفولت موبيل ستايل - أرابيك - إنجليش (أوس) الاتصال بنا الأرشيف الأعلى أدونس كوبيرايت & كوبي؛ 2017 دراغونبيت تيشنولوجيز Ltd.
نظام تنبيه المستخدم المقدمة من قبل المستخدم المتقدم تاجينغ v3.3.0 (برو) - فوليتين تعديل & أمب؛ أدونس كوبيرايت & كوبي؛ 2017 دراغونبيت تيشنولوجيز Ltd.
الاتصال بنا - الأرشيف - الأعلى بويرد بي فوليتين مساعدة حفظ البيانات؟ أدونس كوبيرايت & كوبي؛ 2017 دراغونبيت تيشنولوجيز Ltd.
اسم المستخدم تغيير المقدمة من قبل تغيير اسم المستخدم (مجانا) - فوليتين مودس & أمب؛ أدونس كوبيرايت & كوبي؛ 2017 دراغونبيت تيشنولوجيز Ltd.
No comments:
Post a Comment