我可以使用本地文件在指定的存储桶中成功创建新对象,如下所示。可以使用 OSS 管理器工具进行验证。但是,我无法获取该对象的详细信息或
我可以使用本地文件在指定的存储桶中成功创建新对象,如下所示。可以使用 OSS 管理器工具
.
但是,我无法获取该对象的详细信息或删除该对象。调用被抛出“System.NullReferenceException”,没有任何详细信息。访问令牌和存储桶密钥与上传图像中显示的相同,因此它们不为空。
所有范围都添加到令牌中以确保这不是问题,即使它会引发不同的错误。
成功执行这些方法的正确方法是什么?
我尝试使用对象的名称、objectId 和 objectKey,但没有成功。
事件 Console.CancelKeyPress 用于此目的。其使用方法如下:
public static void Main(string[] args)
{
Console.CancelKeyPress += delegate {
// call methods to clean up
};
while (true) {}
}
当用户按下Ctrl+C,委托中的代码将运行,程序将退出。这样,您就可以通过调用必要的方法来执行清理。请注意,委托之后的代码不会被执行。
在其他情况下,这种方法行不通。例如,如果程序当前正在执行无法立即停止的重要计算。在这种情况下,正确的策略可能是在计算完成后告诉程序退出。以下代码给出了如何实现此方法的示例:
class MainClass
{
private static bool keepRunning = true;
public static void Main(string[] args)
{
Console.CancelKeyPress += delegate(object? sender, ConsoleCancelEventArgs e) {
e.Cancel = true;
MainClass.keepRunning = false;
};
while (MainClass.keepRunning) {
// Do your work in here, in small chunks.
// If you literally just want to wait until Ctrl+C,
// not doing anything, see the answer using set-reset events.
}
Console.WriteLine("exited gracefully");
}
}
此代码与第一个示例的区别在于, e.Cancel
设置为 true,这意味着在委托之后继续执行。如果运行,程序将等待用户按下Ctrl+C。当发生这种情况时, keepRunning
变量的值会改变,从而导致 while 循环退出。这是一种让程序正常退出的方法。