小编Rex*_*Lam的帖子

C#/ VB.Net任务vs线程与BackgroundWorker

我有"谷歌搜索"但仍然与任务,线程和后台工作者混淆.....

  1. "任务是在当前线程上运行的高级API"是否正确?

  2. 如果1是正确的,为什么我需要使用invoke来更改同一线程中任务内的UI?

  3. Backgroundworker在应用程序中只获得最低优先级?那么backgroundworker的性能低于任务和线程?对 ?

  4. 最后,在我的应用程序中,我需要使用"HttpWebRequest"从服务器获取一个字符串,之后解析字符串并更新UI.如果我使用"HttpWebRequest.BeginGetResponse"来等待异步结果并触发一个完整的事件来更新UI,我需要使用invoke方法来调用UI线程控件,但是我可以使用后台工作器代替吗?我可以简单地在"RunWorkerCompleted"事件中更改UI,有什么不利之处吗?

对不起我的游泳池英语并感谢您的帮助......!

c# vb.net multithreading task backgroundworker

7
推荐指数
1
解决办法
5105
查看次数

自定义后退按钮标题并保持向后滑动手势

问题:我想在像Whatsapp(<Chats(2)/ <Chats(3))这样的弹出视图控制器中自定义导航后退按钮标题。

但是,如果在弹出的视图控制器中分配新的backBarButtonItem,则会禁用向后滑动手势

self.navigationController.interactivePopGestureRecognizer.delegate = self;
Run Code Online (Sandbox Code Playgroud)

要保持手势正常工作,它将给您带来更多麻烦(麻烦太多了)。

uinavigationcontroller uibarbuttonitem ios ios7

5
推荐指数
1
解决办法
3094
查看次数

ASP.Net Core 日志文件不是在 Linux 环境中编写的

我有一个 ASP.Net Core (.Net Core 1.1.1) 应用程序,它使用内置记录器并将Serilog.Extensions.Logging.File日志写入文件,它在我的 macOS 开发环境中运行良好,但在 CentOS 环境中运行良好。

appsetting json:

"Logging": {
    "IncludeScopes": false,
    "PathFormat": "Logs/log-{Date}.log",
    "RetainedFileCountLimit": 7,
    "LogLevel": {
        "Default": "Warning"
    }
}
Run Code Online (Sandbox Code Playgroud)

启动.cs:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
        loggerFactory
            .AddConsole(Configuration.GetSection("Logging"))
            .AddFile(Configuration.GetSection("Logging"))
            .AddDebug();
Run Code Online (Sandbox Code Playgroud)

Logs目录不存在,我检查了以下内容:

  • 应用程序文件夹所有者是 centos
  • 应用程序服务Usercentos,与文件夹所有者相同
  • 日志可用 journalctl
  • 没有错误信息

我错过了什么吗?

linux kestrel serilog asp.net-core

5
推荐指数
0
解决办法
2958
查看次数

SupportFragment + TabWidget +三星设备= "java.lang.IllegalStateException:以后的onSaveInstanceState无法执行此操作"?

我有使用android.support.v4库非常简单FragmentActivity,有的只是FragmentActivity,其中包含4片段内TabHost.

没有异步任务,没有onSaveInstanceState()的实现.

在市场上几周之后我得到了很多异常报告,名为"java.lang.IllegalStateException:onSaveInstanceState后无法执行此操作"(请参阅​​下面的堆栈跟踪),全部来自三星设备(SM-N9003,GT-I9305,GT) -N7100 ......等等,完全不知道出了什么问题.

我之前搜索过一些类似的问题,但根本没有答案.

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:id="@+id/realtabcontent"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <android.support.v4.app.FragmentTabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="0" />
    </android.support.v4.app.FragmentTabHost>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

代码:

private void setupTabs() {
    FragmentTabHost tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
    tabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

    tabHost.addTab(setIndicator(this, tabHost.newTabSpec(FragmentList), getString(R.string.tabwidget_List), R.drawable.btn_icon_order), ListFragment.class, null);
    tabHost.addTab(setIndicator(this, tabHost.newTabSpec(FragmentSwitch), getString(R.string.tabwidget_Switch), R.drawable.btn_icon_switch), SwitchFragment.class, null);
    tabHost.addTab(setIndicator(this, tabHost.newTabSpec(FragmentQueue), getString(R.string.tabwidget_Queue), R.drawable.btn_icon_queue), QueueFragment.class, null);
    tabHost.addTab(setIndicator(this, tabHost.newTabSpec(FragmentMore), getString(R.string.tabwidget_More), R.drawable.btn_icon_more), MoreFragment.class, null);

}

private TabSpec setIndicator(Context context, TabSpec tabSpec, String …
Run Code Online (Sandbox Code Playgroud)

android tabwidget android-fragments

3
推荐指数
1
解决办法
1478
查看次数

C#文本日志文件的最佳实践

我有一个在IIS托管环境中运行的ASP.Net MVC应用程序,我希望有一个应用程序明智的日志文件来记录一些自定义事件和错误.

这样做的最佳做法是什么?

  • 我应该在应用程序启动时打开文件(比如log.txt),每当我需要时使用StreamWriter写入,并在应用程序结束时关闭

  • 或打开 - >写 - >每次关闭?

对于第一种方法,我担心当应用程序域退出意外时文件仍会保持打开状态,

对于第二种方法,由于多线程操作或太频繁打开/关闭可能有IO错误?

有任何想法吗 ?

c# asp.net-mvc logging text file

0
推荐指数
1
解决办法
9619
查看次数