我正在使用Google.Cloud.Firestore客户端尝试在用户关闭我的控制台应用程序时通过一次写入来更新我的整个集合。我不确定这是否可行,我知道我可以使用批处理,但文档(link)没有任何批处理用法示例。到目前为止,这是我的代码:
private delegate bool ConsoleCtrlHandlerDelegate(int sig);
[DllImport("Kernel32")]
private static extern bool SetConsoleCtrlHandler(ConsoleCtrlHandlerDelegate handler, bool add);
static ConsoleCtrlHandlerDelegate _consoleCtrlHandler;
//the code below is inside the main function
_consoleCtrlHandler += s =>
{
Debug.WriteLine("Application closed.");
Task.Run(async () =>
{
QuerySnapshot allStations = await collection.SnapshotAsync();
foreach (DocumentSnapshot document in allStations.Documents)
{
Debug.WriteLine(document.Id);
DocumentReference doc = collection.Document(document.Id);
Dictionary<FieldPath, object> updatesRegular = new Dictionary<FieldPath, object>
{
{ new FieldPath("status"), 0 }
};
await doc.UpdateAsync(updatesRegular);
}
}).GetAwaiter().GetResult();
return false;
};
SetConsoleCtrlHandler(_consoleCtrlHandler, true);
触发事件但更新无效。 感谢