Dropbox.NET SDK listFolderLongpoll始终返回更改:true
我正在尝试使用Dropbox.NETSDK编写一些代码。我的目标与以下场景相关: 我有一个与一个人共享的主文件夹。此人偶尔会更改主文件夹中的文件。我在别处有一个共享文件夹的集合,每个文件夹都与不同的个人共享。主文件夹中的每个文件都需要复制到各个共享文件夹,具体取决于每个文件夹的共享对象。给定以下文件夹/文件结构:Dropbox.NET SDK listFolderLongpoll始终返回更改:true,.net,api,sdk,dropbox,.net,Api,Sdk,Dropbox,我正在尝试使用Dropbox.NETSDK编写一些代码。我的目标与以下场景相关: 我有一个与一个人共享的主文件夹。此人偶尔会更改主文件夹中的文件。我在别处有一个共享文件夹的集合,每个文件夹都与不同的个人共享。主文件夹中的每个文件都需要复制到各个共享文件夹,具体取决于每个文件夹的共享对象。给定以下文件夹/文件结构: Master (folder) Master/a.txt Master/b.txt A (folder) B (folder) a、 txt需要从主机复制到主机 b、 txt
Master (folder)
Master/a.txt
Master/b.txt
A (folder)
B (folder)
a、 txt需要从主机复制到主机
b、 txt需要从Master复制到b
目前,此复制是手动完成的。我的目标是使这个过程自动化。以下是我一直坚持的观点:
DropboxClient.Files.ListFolderLongpollAsync
始终返回true
,即使没有任何更改。此外,当我根据ListFolderLongpollResult.Changes
的文档调用DropboxClient.Files.ListFolderContinueAsync
以获取更改的文件时,Entries
属性为空。即使我对文件进行了更改,这也是正确的
这是我的密码:
class Program
{
static void Main(string[] args)
{
var task = Task.Run((Func<Task>)Program.Run);
task.Wait();
}
static async Task Run()
{
try
{
using (var dbx = new Dropbox.Api.DropboxClient("<ACCESS_TOKEN>"))
{
var listFolderArg = new ListFolderArg("/master", true);
var cursor = await dbx.Files.ListFolderAsync(listFolderArg);
ListFolderLongpollArg listFolderLongPollArg = new ListFolderLongpollArg(cursor.Cursor, 30);
var lp = await dbx.Files.ListFolderLongpollAsync(listFolderLongPollArg);
if (lp.Changes)
{
var res = await dbx.Files.ListFolderContinueAsync(new ListFolderContinueArg(cursor.Cursor));
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
类程序
{
静态void Main(字符串[]参数)
{
var task=task.Run((Func)Program.Run);
task.Wait();
}
静态异步任务运行()
{
尝试
{
使用(var dbx=new Dropbox.Api.DropboxClient(“”)
{
var listFolderArg=new listFolderArg(“/master”,true);
var cursor=await dbx.Files.ListFolderAsync(listFolderArg);
ListFolderLongpollArg ListFolderLongpollArg=新的ListFolderLongpollArg(cursor.cursor,30);
var lp=await dbx.Files.ListFolderLongpollAsync(listFolderLongPollArg);
if(lp.变更)
{
var res=await dbx.Files.ListFolderContinueAsync(新的ListFolderContinueArg(cursor.cursor));
}
}
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
}
}
}
我尝试先获取一个初始游标,然后调用ListFolderLongpollAsync
,然后调用ListFolderAsync
,以获取一个新游标,然后再调用ListFolderLongpollAsync
,我想也许我需要找出在获取第一个和第二个游标之间是否有变化,但是结果相同
我到底错过了什么?的结果,所有结果都取决于您提供的光标值。为了报告更改:false
,您需要为最新状态提供光标。但是,您的代码并没有显示您正在存储最新的游标。您似乎总是/只使用返回的游标
为了及时了解最新状态,您需要每次调用并可能重复使用最后返回的光标
,直到isfalse
。文档中有关于处理这些条目的更多信息
顺便说一句,我从你的帖子中编辑了它,但是为了安全起见,你应该禁用该访问令牌,因为你公开发布了它。如果访问令牌用于您的帐户,您可以使用完全撤销对应用程序的访问
或者,您可以使用API(例如,通过)仅禁用此访问令牌