小编Joh*_*lay的帖子

GetAwaiter().GetResult() 和 .Result 都不适合我,但 Task.Run(await ()=> nameOfMethodTobeCalled()).Result 工作。我没听懂?

在我的 asp.net 应用程序中,我正在调用我添加到应用程序中的 nuget 包的一些异步方法。现在我有一个同步方法,我需要调用我添加的 .dll 的异步方法。因此,我调用了这些方法并检索结果,我使用了

var value = myDllClient.MyMethod().GetAwaiter().GetResult(); 和
var value = myDllClient.MyMethod().Result;,

但这些都不适合我,但线程进入永无止境的过程。我从未收到过任何东西所以我使用了

var value = Task.Run(async ()=> wait myDllClient.MyMethod()).Result;

令人惊讶的是工作正常。我不知道它的运作如何?谁能帮我解开这个谜团?

提前致谢

c# dll multithreading task-parallel-library async-await

4
推荐指数
1
解决办法
2704
查看次数

如何获取枚举器列表的下一个和上一个值?

当我尝试循环枚举数列表时,如何获取下一个和上一个值。请找到以下代码。

public static void Main() 
{ 

    List<string> mylist = new List<string>(); 
    mylist.Add("C#"); 
    mylist.Add("Java"); 
    mylist.Add("C"); 
    mylist.Add("C++"); 

    // To get an Enumerator 
    // for the List. 
    List<string>.Enumerator em = mylist.GetEnumerator(); 
    display(em); 
} 

static void display(IEnumerator<string> em) 
{ 
    while (em.MoveNext()) { 
        string val = em.Current; // Want to know Next and Previous values of current value.


        Console.WriteLine(val); 
    } 
}
Run Code Online (Sandbox Code Playgroud)

.net c#

3
推荐指数
1
解决办法
421
查看次数

C# 属性不返回我在 set 访问器中更改的值

物业:

public double TotalFee
{ 
    get { return totalfee; }
    set
    {
        if ((course == "C#") || (course == "c#")) { totalfee = 2000; }
        else { totalfee = 3000; }
    }
} 
Run Code Online (Sandbox Code Playgroud)

我创建了一个名为totalfee的变量 ' private double totalfee;' ,其中我在开始时没有分配任何值,当我在我的程序中调用该属性时返回 0。即使我为totalfee提供了一个预值,它也只会返回该值,而不会满足我的任何条件制作。这个想法是,当用户输入课程时:c# 它将返回totalfee 2000的值;如果他输入另一门课程,它将返回totalfee 3000的值。:/

c# properties

0
推荐指数
1
解决办法
235
查看次数

Assets/Script/Scoreboard.cs(33,2): 错误 CS1525: 意外符号“{”

检查了脚本但仍然没有解决

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Scoreboard : MonoBehaviour 
{

    public GameObject[] stars;
    private int coinsCount;
    void Start()
    {
         coinsCount = GameObject.FindGameObjectsWithTag("coin").Length;
    }


    public void starsAcheived()
    {
        int coinsLeft = GameObject.FindGameObjectsWithTag("coin").Length;
        int coinsCollected = coinsCount - coinsLeft;

        float percentage = float.Parse( coinsCollected.ToString()) / float.Parse(coinsCount.ToString()) * 100f;

         if (percentage >= 33f && percentage < 65)
        {
          stars[0].SetActive(true);//one stars
        }
        else if (percentage >= 65 && percentage < 76)
        {
         stars[0].SetActive(true);
         stars[1].SetActive(true);// two stars
        }
        else (percentage>= 76)
        { …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

-5
推荐指数
1
解决办法
68
查看次数