我已经使用try-catch多年了,但我从来没有学过如何以及何时使用finally,因为我从未明白finally(我读过坏书)的意思?
我想问你finally在我的案子中的用法.
我的代码示例应该解释一切:
$s = "";
$c = MyClassForFileHandling::getInstance();
try
{
$s = $c->get_file_content($path);
}
catch FileNotFoundExeption
{
$c->create_file($path, "text for new file");
}
finally
{
$s = $c->get_file_content($path);
}
Run Code Online (Sandbox Code Playgroud)
终于正确使用了吗?
更准确的问题:
我可以使用finally(在未来的PHP版本或其他语言中)处理"创建一些不存在的东西"操作吗?
我想知道,当我运行Parallel.For/ForEach循环时将使用多少个线程.
我发现,它可以通过MaxDegreeOfParallelism选项进行更改.
MSDN上的MaxDegreeOfParallelism帮助说(链接):
默认情况下,For和ForEach将使用底层调度程序提供的许多线程,因此从默认值更改MaxDegreeOfParallelism仅限制将使用多少并发任务.
但我不知道调度程序提供了多少个线程.
我该怎么知道呢?
我可以用9999999运行循环测试它,但是这个测试会显示数字,但不是确定该数字的规则.
稍后编辑/添加:
我搜索了"sheduler max并发",我发现(在MSDN - 链接),TashSheduler该类有MaximumConcurrencyLevel属性,并且:
返回表示最大并发级别的整数.默认调度程序返回Int32.MaxValue.
TaskSheduler类是否用作这些并行循环的"底层调度程序"?
我有2个申请.
VB应用程序是用.NET 3.5编写的.这是一个很大的应用程序.我无法将其重写为C++,原因很简单.我不确定这是否重要,但它是x86应用程序.
C++应用程序是用.NET 4.0编写的.它是x64版本,不会有x86支持.现在 - 它是带有一些汇编代码的托管代码.当我更多地了解C++时,我将在以后混合托管和非托管.它是x64版本,必须保持这样.
它应该扩展VB应用程序功能 - 从相机捕获帧,用它们做一些事情并将处理过的图像发送到VB应用程序.图像非常大(1920x1080x24bpp),我需要每秒处理30-60帧,所以它必须是有效的方式.
我的目标:
从C++应用程序"发送"位图到VB应用程序,VB应用程序应该在该位图出现时启动一些方法.
从VB应用程序到C++应用程序以另一种方式"发送"一些信息.它应该从VB应用程序GUI更改C++应用程序处理参数.
如果可能 - 只发送一个指针和位图大小,而不是复制RAM中的整个数据.
可以说,我想要这样的东西:
VB方面:
Function receivedBitmapFromCpp(BMP_POINTER?, BMP_SIZE_X?, BMP_SIZE_Y?, BMP_BPP?) As Integer Handles ????
End Function
Run Code Online (Sandbox Code Playgroud)
C++方面:
void sendBitmapToVb(BMP_POINTER?, BMP_SIZE_X?, BMP_SIZE_Y?, BMP_BPP?)
{
int bitmapsendingresult = ?????
}
Run Code Online (Sandbox Code Playgroud)
它可能是System.Drawing.Bitmap,或者只是一些我将在VB应用程序中转换为System.Drawing.Bitmap的数组.没关系那么重要.
我的问题:
有人可以解释一下,我该怎么办:
我用UTF-8编码的内容创建了文件(使用PHP fputcsv).
当我在Notepad ++中打开此文件时 - 字符错误(Notepad ++以ANSI编码开头).
当我从菜单中设置格式 - >"在UTF-8中编码"时 - 一切都很好.
我担心,Notepad ++可以以某种方式识别编码,也许我的文件创建时有问题fputcsv?第一个字节或什么?
如何在CPU中获得多个逻辑核心?
我需要这个来确定我应该在我的应用程序中运行多少个线程.
我必须以某种方式处理Java中的8字节无符号整数类型.
我的8字节无符号整数存储在ByteBuffer包装的字节数组中.它来自数据记录器数据库,包含非常大的数字.
这是我如何处理4字节整数将它们作为无符号读取它们:
((long) (bytebuffer.getInt() & 0xFFFFFFFFL));
Run Code Online (Sandbox Code Playgroud)
不幸的是:
((BigInteger) (bytebuffer.getLong() & 0xFFFFFFFFFFFFFFFFL));
Run Code Online (Sandbox Code Playgroud)
不起作用.
如何存储数字2 ^ 64-1并将其读取为2 ^ 64-1?
我在Visual Studio 2012中遇到了一个问题.我也在使用"Sams每天一小时教你自己C++,第7版".
在使用谷歌找到C++的"最佳"编译器之后,Visual Studios似乎成了首选工具.
所以我下载并安装了Visual Studios 2012.本书的第一课是(并告诉我通过转到文件>新建>项目> Visual C++> Win32>控制台应用程序将其作为控制台应用程序运行)
#include <iostream>
int main()
{
std::cout << “Hello World!” << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
根本不起作用.它输出类似于以下内容的错误消息:
1> c:\ users \nik\documents\visual studio 2012\projects\consoleapplication4\consoleapplication4\consoleapplication4.cpp(8):错误C2065:'"Hello":未声明的标识符1>生成代码... ===== =====构建:0成功,1个失败,0个最新,0个跳过=========="
(有更多的线条与第一条相似,但它相当长)
但是,在谷歌搜索和观看youtube上的视频后,以下代码可以正常工作(使用文件>新建>项目> Visual C++>常规>空项目)
#include <iostream>
#include "conio.h"
using namespace std;
int main() {
cout << "Hello Nik" << endl;
_getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio 2012是否有C++编译器?或者它只是有一个可视化的c ++编译器(如果这就是问题,只是因为我认为它可能是我可以看到Visual C++的模板但是c ++本身没有...)或者我是否需要下载Visual Studio Express下载本机c ++ ??
任何帮助都会非常感激,因为我感觉有些 - 我的深度在这里......
谢谢.
有没有办法找到比这更有效/更快的最小价值指数?
int minimumValueIndex = List.IndexOf(List.Min());
Run Code Online (Sandbox Code Playgroud) 在这种情况下,我不知道如何设置依赖关系(在何处添加EntityFramework nuget包):
Core.Persistence编译为.NET Standard 2.0 DLL库的项目。我有Entity Framework 6,用于EF,DbContext等的数据库实体类。它应该仅依赖于EntityFrameworkCore。
Core.Domain该项目还将编译为.NET Standard 2.0 DLL库。我想将我的业务对象POCO类放在这里。应该没有依赖性。
Core.Application项目,这是.NET Standard 2.0 DLL库。我这里有所有应用程序逻辑。这取决于Core.Persistence它进行数据库查询以及Core.Domain由于它从查询结果中生成业务对象。
Client.ConsoleClient项目。它使.NET Framework 4.7.2可执行。它应该仅仅依靠Core.Application,但是我在这里有一个问题。
Client.WindowsClient 我不想关注这个问题的项目。
所以,这就是我所做的:
问题是,System.IO.FileLoadException当我尝试从中调用method时遇到了问题Core.Application。
它说找不到System.Interactive.Async文件(是的依赖项EntityFrameworkCore)。在我将此文件添加为依赖项之后-还有其他System.IO.FileLoadException错误。
因此,我暂时将EF6 Core NuGet软件包添加到了我的Client.ConsoleClient,问题System.IO.FileLoadException已经消失了,但是我感觉自己做错了。
此时,我发现Visual Studio并未将DLL文件从Core.xxx项目输出复制到Client.ConsoleClient项目输出,这就是为什么我会出错。
如何正确解决?
使用C# Windows Forms;
我有DataGridView一些细胞.我想在单元格中显示数字(从1-9开始).数字应以3x3格式放在彼此之下.
我环顾四周,结果只是一个相当复杂的richtextbox单元格自定义实现.
有没有办法我可以绘制一个custom rectangle然后实现这个backgroundimage单元格的东西?细胞需要重新绘制几次.所以我不能只调用这个paint事件.
注意:用户不得编辑单元格.
c# ×5
.net-3.5 ×2
c++ ×2
.net ×1
.net-4.5 ×1
datagridview ×1
encoding ×1
interprocess ×1
java ×1
list ×1
notepad++ ×1
nuget ×1
optimization ×1
php ×1
text-files ×1
types ×1
vb.net ×1
visual-c++ ×1
winforms ×1