Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Xamarin的后台执行函数?_Xamarin - Fatal编程技术网

如何在Xamarin的后台执行函数?

如何在Xamarin的后台执行函数?,xamarin,Xamarin,当我的应用程序将打开时,我试图在后台执行一个函数,为此,我试图使用task创建一个异步函数,但我无法做到这一点 我该如何修理它 Xamarin OnStart protected override void OnStart(){ DefineConcursoSession(); } //execute in background private async void DefineConcursoSession(){ ConcursoDTO dto = await Co

当我的应用程序将打开时,我试图在后台执行一个函数,为此,我试图使用task创建一个异步函数,但我无法做到这一点

我该如何修理它

Xamarin OnStart

protected override void OnStart(){
     DefineConcursoSession();
}

//execute in background
private async void DefineConcursoSession(){
        ConcursoDTO dto = await ConcursoService.GetConcursoAtivo();
        //save session
    }
public async static Task<ConcursoDTO> GetConcursoAtivo(){
        String ENDPOINT = "/GetConcursoAtivo";
        String URL_FINAL = URL_CONTROLLER + ENDPOINT;

        ConcursoDTO dto = new ConcursoDTO();

        try
        {
            HttpClient hClient = new HttpClient();
            hClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            hClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", BasicAuth.getHash());

            //get
            HttpResponseMessage response = hClient.GetAsync(URL_FINAL).GetAwaiter().GetResult();
            var resultContent = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
            //Console.WriteLine("Content: " + resultContent);


            if (response.StatusCode == HttpStatusCode.OK){                
                JObject jo = JObject.Parse(resultContent);
                dto = JsonConvert.DeserializeObject<ConcursoDTO>(jo["Concurso"].ToString());                
                
            }
        }
        catch (Exception e)
        {
            Debug.WriteLine("Erro: GetConcursoAtivo:-> " + e.Message);
        }

        return dto;

    }
HttpClient

protected override void OnStart(){
     DefineConcursoSession();
}

//execute in background
private async void DefineConcursoSession(){
        ConcursoDTO dto = await ConcursoService.GetConcursoAtivo();
        //save session
    }
public async static Task<ConcursoDTO> GetConcursoAtivo(){
        String ENDPOINT = "/GetConcursoAtivo";
        String URL_FINAL = URL_CONTROLLER + ENDPOINT;

        ConcursoDTO dto = new ConcursoDTO();

        try
        {
            HttpClient hClient = new HttpClient();
            hClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            hClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", BasicAuth.getHash());

            //get
            HttpResponseMessage response = hClient.GetAsync(URL_FINAL).GetAwaiter().GetResult();
            var resultContent = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
            //Console.WriteLine("Content: " + resultContent);


            if (response.StatusCode == HttpStatusCode.OK){                
                JObject jo = JObject.Parse(resultContent);
                dto = JsonConvert.DeserializeObject<ConcursoDTO>(jo["Concurso"].ToString());                
                
            }
        }
        catch (Exception e)
        {
            Debug.WriteLine("Erro: GetConcursoAtivo:-> " + e.Message);
        }

        return dto;

    }
public异步静态任务GetConcursoAtivo(){
字符串ENDPOINT=“/GetConcursoAtivo”;
字符串URL\u FINAL=URL\u控制器+端点;
ConcursoDTO dto=新ConcursoDTO();
尝试
{
HttpClient hClient=新的HttpClient();
hClient.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
hClient.DefaultRequestHeaders.Authorization=newauthenticationHeaderValue(“Basic”,BasicAuth.getHash());
//得到
HttpResponseMessage response=hClient.GetAsync(URL_FINAL.GetAwaiter().GetResult();
var resultContent=response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
//Console.WriteLine(“内容:+resultContent”);
如果(response.StatusCode==HttpStatusCode.OK){
JObject jo=JObject.Parse(resultContent);
dto=JsonConvert.DeserializeObject(jo[“Concurso”].ToString());
}
}
捕获(例外e)
{
Debug.WriteLine(“Erro:getconcursoative:->”+e.Message);
}
返回dto;
}

如果你认为这是Hi的翻版,iOS和Android都有自己的背景技术来实现这一点,你可以看看和。