C# facebook sdk网络中的变量问题

C# facebook sdk网络中的变量问题,c#,facebook,facebook-graph-api,windows-phone-7,windows-phone-8,C#,Facebook,Facebook Graph Api,Windows Phone 7,Windows Phone 8,我在这一行得到消息,我使用了未设置的局部变量“name” string firstname = name; 但是我在这行中设置了变量名 name = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]); 我的错在哪里?如何设置从name到firstname的值 private void LoadUserInfo() { string name; var fb =

我在这一行得到消息,我使用了未设置的局部变量“name”

string firstname = name;
但是我在这行中设置了变量名

name = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
我的错在哪里?如何设置从name到firstname的值

private void LoadUserInfo()
{
    string name;
    var fb = new FacebookClient(App.AccessToken);

    fb.GetCompleted += (o, e) =>
    {
        name = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
    });

    string firstname = name;

    fb.GetTaskAsync("me");
}

public void LoadUserInfo()
{
使用(FacebookDataContext db=new FacebookDataContext(DBConnectionstring))
{
FacebookClient fb=新的FacebookClient(App.AccessToken);
fb.GetCompleted+=(o,e)=>
{
var result=(IDictionary)e.GetResultData();
var FBName=String.Format(“{0}{1}”,(String)result[“first_name”],(String)result[“last_name”]);
db._fbcontacts.InsertOnSubmit(新的FacebookContactsList{Name=FBName});
db.SubmitChanges();
};
fb.GetTaskAsync(“我”);
}
}

以下行位于
GetCompleted
事件的事件处理程序块中。因此,当调用并完成
fb.GetTaskAsync(“me”)
之后的事件发生时,将执行该命令:

name = String.Format("{0} {1}", .......);
这意味着,在您尝试使用
name
变量时,尚未设置该变量:

string firstname = name;
我不知道你以后会怎么处理名字。。问题是,您需要在设置
名称
后设置
firstname
,例如,在同一事件处理程序块中:

fb.GetCompleted += (o, e) =>
{
    name = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
    string firstname = name;
    ....
});
更新:

 FacebookClient fb = new FacebookClient(App.AccessToken);
 fb.GetCompleted += (o, e) =>
 {
     var result = (IDictionary<string, object>)e.GetResultData();
     var FBName = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
     using (FacebookDataContext db = new FacebookDataContext(DBConnectionstring))
     {
        db._fbcontacts.InsertOnSubmit(new FacebookContactsList { Name = FBName }); 
        db.SubmitChanges();
     }
 };
 fb.GetTaskAsync("me");
FacebookClient fb=新的FacebookClient(App.AccessToken);
fb.GetCompleted+=(o,e)=>
{
var result=(IDictionary)e.GetResultData();
var FBName=String.Format(“{0}{1}”,(String)result[“first_name”],(String)result[“last_name”]);
使用(FacebookDataContext db=new FacebookDataContext(DBConnectionstring))
{
db._fbcontacts.InsertOnSubmit(新的FacebookContactsList{Name=FBName});
db.SubmitChanges();
}
};
fb.GetTaskAsync(“我”);

出现了什么错误?使用未设置的局部变量“name”。项目尚未编译,但我需要它您在理解回调如何工作时遇到问题。代码不一定要逐行执行。从任何表示“async”的内容中得到一个提示,它不会立即执行。我是否有方法将name的值设置为firstname?我想在localdatabase中写入这个firstname。但当我想在fb.GetCompleted+=(o,e)=>{}中的DB中进行记录时,我得到了一个错误,我的应用程序是fall;无法访问此数据库中已释放的对象。\u fbcontacts.InsertOnSubmit(新FacebookContactsList{Name=FBName})。我写了新的答案是的。错误消失了。但第一次启动后,应用程序无法正常工作。当我在db.SubmitChanges()之后调试时;什么也没有发生。应用程序不移动到下一行代码。但当我第二次启动应用程序时,它工作正常
 FacebookClient fb = new FacebookClient(App.AccessToken);
 fb.GetCompleted += (o, e) =>
 {
     var result = (IDictionary<string, object>)e.GetResultData();
     var FBName = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
     using (FacebookDataContext db = new FacebookDataContext(DBConnectionstring))
     {
        db._fbcontacts.InsertOnSubmit(new FacebookContactsList { Name = FBName }); 
        db.SubmitChanges();
     }
 };
 fb.GetTaskAsync("me");