我不确定如何解释这一点,所以我会尽力给予它。 基本上我有一个连接到DropBox的应用程序。我遇到的一个情况是注册过程。在注册过程中,它使用默认浏览器连接到DropBox,然后需要用户登录并单击允许应用程序使用该服务。作为回报,您将获得一个应用程序可用于连接服务的令牌。我遇到的问题是让应用程序等到上述过程完成。我想出让它等待的唯一方法是使用system.threading(int)。但是,如果此人需要更长时间然后超时,则无法正确注册。
我希望有人可以指出我正确的方向并让它等待没有线程功能。我希望我可以使用if循环或其他东西,但我不知道如何正确地做到这一点。
这是实际的Oauth代码:
private static OAuthToken GetAccessToken()
{
string consumerKey = "*****";
string consumerSecret = "****";
var oauth = new OAuth();
var requestToken = oauth.GetRequestToken(new Uri(DropboxRestApi.BaseUri), consumerKey, consumerSecret);
var authorizeUri = oauth.GetAuthorizeUri(new Uri(DropboxRestApi.AuthorizeBaseUri), requestToken);
Process.Start(authorizeUri.AbsoluteUri);
return oauth.GetAccessToken(new Uri(DropboxRestApi.BaseUri), consumerKey, consumerSecret, requestToken);
}
,这是单击注册按钮时调用的完整oauth函数:
var accesstoken = GetAccessToken();
答案 0 :(得分:0)
您需要制作其GetAccessToken调用的Async(异步)版本。在完成后会调用你的某些功能的。
您也可以循环直到信息准备就绪,例如
while (dataIsNotReady()) {
Thread.Sleep(1000); // sleep for a bit. this is bad, locks up entire thread maybe even application while it sleeps. Make it shorter for less impact.
// TODO add a "timeout", i.e. only try this for X amount of time before breaking out
}
// Now we data is ready let's go
<强>更新强> 也许你最好使用一个可以为你做异步的库,例如这个Dropbox C#库:https://github.com/dkarzon/DropNet