AMcoder - javascript, python, java, html, php, sql

Հնարավոր չէ պատշաճ կերպով կիրառել Await-ը և Async-ը C#5.0-ում

Ես ունեմ ստորև բերված ծրագիրը, որը ֆայլերը կտեղափոխի մի գրացուցակից մյուսը: Սինխրոն եղանակով այն լավ է աշխատում: Բայց ես ուզում եմ դա անել ասինխրոն եղանակով:

Շնորհակալություն

23.06.2012

Պատասխանները:


1

Սխալն ամեն ինչ ասում է. դուք չեք կարող await ինչ-որ բան, որը void է: Դուք կարող եք միայն await Taskներ և այնպիսի բաներ, որոնք նման են Tasks-ին (օրինակ՝ YieldAwaitable, որը վերադարձվել է Task.Yield()): Բայց դուք, անշուշտ, չեք կարող await void:

Ֆայլը .Net 4.5-ում ասինխրոն կերպով տեղափոխելու միջոց կարծես թե չկա:

Լավագույնը, որ դուք կարող եք անել, կամ օգտագործելն է await Task.Run(() => fileinfo.MoveTo(target))-ի նման մի բան, որը դեռևս կարգելափակի շարանը, բայց ոչ ընթացիկը (կարող է օգտակար լինել, եթե դուք UI շղթայում եք):

Կամ, որպես այլընտրանք, դուք կարող եք պատճենել ֆայլը ինքներդ՝ օգտագործելով Streams (որը կարող է լինել ասինքրոն), այնուհետև ջնջել բնօրինակը:

23.06.2012
  • Ողջույն, ձեր առաջարկն աշխատեց, բայց կառավարումը չի վերադառնում, և, հետևաբար, MessageBox.Show (Ֆայլերը հաջողությամբ պատճենված են) երբեք զանգ չի ստանում: Ի՞նչ անել: 23.06.2012
  • Դժվար է ասել, փորձե՞լ եք վրիպազերծել կոդը՝ տեսնելու, թե իրականում ինչ է կատարվում: Իսկ ֆայլերը տեղափոխելիս ձեր հավելվածը արձագանքո՞ւմ է: Եթե ​​ոչ, դա կարող է ցույց տալ, որ ինչ-որ տեղ փակուղի ունեք (օրինակ՝ դուք զանգում եք Wait()ին կամ Resultին՝ նախքան Task-ի ավարտը): 23.06.2012

  • 2

    Դուք կարող եք օգտագործել սպասումը միայն այն դեպքում, երբ այն աջակցում է ձեր զանգահարած մեթոդին:

    awaitին աջակցելու համար մեթոդը պետք է վերադարձնի Task<T>

    Այս դեպքում fileInfo.MoveTo-ը չի վերադարձնում Task

    23.06.2012
  • Դուք կարող եք await բաներ, որոնք Taskներ չեն: Տես, օրինակ. Task.Yield(), որը չի վերադարձնում Task, բայց դեռ կարող է awaited. 23.06.2012
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..