Gerar log com tempos de execução (C)

Boa noite galera, alguém sabe me dizer se é possível gerar um log com tempos de execução, ou o tempo teria que ser calculado com alguma função dentro do código? Preciso gerar esse log pra um trabalho de threads em C, creio que seja o tempo de cada thread, mas não achei nenhuma forma de fazer isso. Tô usando o terminal no Ubuntu.

c# como armazenar dados de uma caixa de texto a partir da primeira execução

Estou fazendo um programa que faz bakcup em banco de dados mySQL.
Tenho uma tela onde ou logo com servidor, usuário, senha e porta utilizada no banco.

Mas não quero ficar digitando toda vez que executar o programa, então preciso que o programa armazene por padrão alguns dados depois da primeira execução dele onde eu digitei todos os dados.

Dados que desejo armazenar por padrão:

  • servidor
  • usuário
  • porta

Ou seja, na primeira vez que inicio o programa, eu digito tudo:servidor, usuário, porta e senha.

Já na segunda vez que executo o programa, quero ter que digitar apenas a senha, sem ter que digitar tudo novamente.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.IO.Ports;
using System.IO;
using System.IO.Compression;

namespace Sistema
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
        }

        private void button2_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show(" Quer fazer o backup desse banco ?nn" + comboBox1.Text + "nn Isso pode levar um tempo", "Banco selecionado!", MessageBoxButtons.YesNo);

            switch (dr)
            {
                case DialogResult.Yes:

                    string nomesever = (string)sever.Text;
                    string nomeuser = (string)user.Text;
                    string senha = (string)pass.Text;

                    if (!Directory.Exists(caminho.Text + @"DumpsArquivo_SQL"))
                        Directory.CreateDirectory(caminho.Text + @"DumpsArquivo_SQL");

                    if (!Directory.Exists(caminho.Text + @"DumpsArquivo_ZIP"))
                        Directory.CreateDirectory(caminho.Text + @"DumpsArquivo_ZIP");

                    var currentDateTime = DateTime.Now;

                    string data = DateTime.Now.ToString("dd-MM-yyyy");
                    {
                        string file = caminho.Text + @"DumpsArquivo_SQL" + comboBox1.Text + data + ".sql";//cria sql

                        using (MySqlConnection cn = new MySqlConnection())
                        {
                            cn.ConnectionString = ("server=" + nomesever + ";Port = " + porta.Text + "; pwd = " + senha + "; database = " + comboBox1.Text + "; uid=" + nomeuser + ";SslMode = none");
                            using (MySqlCommand cmd = new MySqlCommand())
                            {
                                using (MySqlBackup mb = new MySqlBackup(cmd))
                                {
                                    string fazendo = "fazendo backup";
                                    MessageBox.Show(fazendo);
                                    cmd.Connection = cn;
                                    cn.Open();
                                    mb.ExportToFile(file);
                                    cn.Close();
                                    string startPath = caminho.Text + @"DumpsArquivo_SQL";
                                    string zipPath = caminho.Text + @"DumpsArquivo_ZIP" + comboBox1.Text + data + ".zip";

                                    ZipFile.CreateFromDirectory(startPath, zipPath);
                                }
                            }
                        }
                    }

                    MessageBox.Show("backup feito");
                    if (File.Exists(caminho.Text + @"DumpsArquivo_SQL" + comboBox1.Text + data + ".sql"))//exclue sql
                        File.Delete(caminho.Text + @"DumpsArquivo_SQL" + comboBox1.Text + data + ".sql");
                    break;
                case DialogResult.No:
                    break;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string nomesever = (string)sever.Text;
            string nomeuser = (string)user.Text;
            string senha = (string)pass.Text;

            try
            {
                MySqlConnection cn = new MySqlConnection();
                cn.ConnectionString = ("server=" + nomesever + "; Port=" + porta.Text + " ; pwd=" + senha + "; uid=" + nomeuser + "; SslMode=none");
                cn.Open();
                MySqlCommand com = new MySqlCommand();
                com.Connection = cn;
                com.CommandText = "Show databases";
                MySqlDataReader dr = com.ExecuteReader();
                DataTable dt = new DataTable();
                dt.Load(dr);
                comboBox1.DisplayMember = "Database";
                comboBox1.DataSource = dt;
                cn.Close();

                MessageBox.Show("conectado, Selecione o banco");
            }
            catch
            {
                MessageBox.Show("Não conectado! n verifique se os dados estão corretos.");
            }
        }

        private void clear_Click(object sender, EventArgs e)
        {
            sever.Text = "";
            user.Text = "";
            pass.Text = "";
            porta.Text = "";
            comboBox1.Text = "";
            caminho.Text = "";
        }

        private void Busca_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog busca = new FolderBrowserDialog();
            busca.RootFolder = Environment.SpecialFolder.Desktop;
            busca.Description = "Selecione a pasta desejada para armazear o backup do banco de dados";
            busca.ShowNewFolderButton = false;

            if (busca.ShowDialog() == DialogResult.OK)
            {
                caminho.Text = busca.SelectedPath;
            }

            BT_Backup.Visible = true;
        }

        private void porta_TextChanged(object sender, EventArgs e)
        {
        }
    }
}

Executar código antes da execução da primeira activity

Estou com o seguinte problema: tenho uma splash screen que será chamada somente se for a primeira execução da aplicação.
Caso não seja a primeira execução gostaria de chamar outra Activity.

Tentei o seguinte… fazer uma InitialActivity do jeito abaixo:

public class InitialActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_initial);
        final SharedPreferences sharedPref = getPreferences(MODE_PRIVATE);
        boolean isFirstUse = sharedPref.getBoolean("is_first_use", true);

        if (isFirstUse)
        {
            SharedPreferences.Editor editor = sharedPref.edit();
            editor.putBoolean("is_first_use", false);
            editor.commit();
            startActivity(new Intent(this, SplashScreen.class));
        } else {
            //verify mode and call correct activity
            startActivity(new Intent(this, MainActivity.class));
        }
    }
}

O problema é que esse cara chama o super.onCreate e acaba criando essa Activity. Acontece que mostra uma tela branca antes de decidir qual Activity inicial eu quero ir.

Como posso solucionar esse problema?

Diretório de execução difere após publicação [C#] [pendente]

Estou desenvolvendo uma aplicação na qual preciso obter qual o local de onde ela sendo executada, para isso tentei utilizar de alguns métodos que se mostraram bastante eficientes durante o período em que estive debugando. O endereço de diretório que eu esperava ter como retorno é o que tive de mencionar quando publiquei o aplicativo, entretanto isso não acontece.

Diretório mencionado para a publicação:

C:UserscaiooDesktopApplication-1.0.0_x86App

Diretório obtido após publicação:

C:UserscaiooAppDataLocalApps2.02DPY0J1J.RDOJLNCOAZ4.G0Cseri..tion_3c71…

Eu não entendo porque ele me retorna esse diretório, é completamente fora do que eu espero.

Métodos utilizados para obter o retorno do diretório de execução:

- System.AppDomain.CurrentDomain.BaseDirectory

- Environment.CurrentDirectory

- Assembly.GetExecutingAssembly().CodeBase

- Directory.GetCurrentDirectory()

- Application.StartupPath

Essa pergunta retirada do StackOverflow também aponta o problema que estou tentando resolver.

Diretório de execução difere após publicação [C#]

Testei vários métodos para obter o diretório de execução da minha aplicação e para todos os casos, após a sua publicação, o diretório acaba sempre diferente daquele que havia previamente sido escolhido. Por que isso acontece e como garantir que o diretório se matenha o mesmo?

Diretório mencionado para publicação:

C:UserscaiooDesktopApplication-1.0.0_x86App

Diretório obtido após publicação:

C:UserscaiooAppDataLocalApps2.02DPY0J1J.RDOJLNCOAZ4.G0Cseri..tion_3c71…

Métodos utilizados:

- System.AppDomain.CurrentDomain.BaseDirectory

- Environment.CurrentDirectory

- Assembly.GetExecutingAssembly().CodeBase

- Directory.GetCurrentDirectory()

- this.GetType().Assembly.Location

- Application.StartupPath

Como obter diretório de execução em C#

Estou desenvolvendo uma aplicação cujo alguns dos métodos necessitam requisitar do sistema qual o seu diretório atual, de execução. No caso, o seu também diretório de publicação. A questão é de que, independente do método utilizado para obter o diretório de execuação, após a publicação o diretório passa a ser outro, irreconhecível. Diferente do conseguido anteriormente.

Debugando:

C:UserscaiooDesktopSerial_x86App

Após publicação:

C:UserscaiooAppDataLocalApps2.02DPY0J1J.RDOJLNCOAZ4.G0Cseri..tion_3c71…

Métodos utilizados:

- System.AppDomain.CurrentDomain.BaseDirectory

- Environment.CurrentDirectory

- Assembly.GetExecutingAssembly().CodeBase

- Directory.GetCurrentDirectory()

- this.GetType().Assembly.Location

- Application.StartupPath

Como obter diretório de execução

Estou desenvolvendo uma aplicação cujo alguns dos métodos necessitam requisitar do sistema qual o seu diretório atual, de execução. No caso, o seu também diretório de publicação.

A questão é de que, independente do método utilizado para obter o diretório de execuação, após a publicação o diretório passa a ser outro, irreconhecível. Diferente do conseguido anteriormente.

Debugando:

C:UserscaiooDesktopSerial_x86App

Após publicação:

C:UserscaiooAppDataLocalApps2.02DPY0J1J.RDOJLNCOAZ4.G0Cseri..tion_3c719d5d1af72b9f_0001.0000_84bddb448ea28a47

Métodos utilizados:

- System.AppDomain.CurrentDomain.BaseDirectory

- Environment.CurrentDirectory

- Assembly.GetExecutingAssembly().CodeBase

- Directory.GetCurrentDirectory()

- this.GetType().Assembly.Location

- Application.StartupPath

Execução paralela

Tenho um processo que fica em execução na minha aplicação para controle. Esse processo é executado dentro de um timer.

private void timer1_Tick(object sender, EventArgs e)
{
    // bloco de instruções 1

    // bloco de instruções 2
}

O que acontece é que o processamento do bloco de instruções 1 acaba sendo demorado, e o bloco de instruções 2 acaba sendo ‘refém’ dessa demora.
Gostaria de que enquanto o bloco de instruções 1 fosse executado, o bloco de instruções 2 também fosse executado, quantas vezes for chamado pelo timer.
O código executado no bloco 2 não depende do bloco 1.

Definir tempo de execução JobService Android

Olá, eu preciso implementar um JobService no Android.

Eu criei a classe base para um Job, mas não estou conseguindo definir um parâmetro de execução, minutos, dias horas e etc.

Não encontro exemplo, alguém já implementou e poderia me ajudar?

public class InformarLocalizacao extends JobService {


@Override
public boolean onStartJob(JobParameters params) {
    return false;
}

@Override
public boolean onStopJob(JobParameters params) {
    return false;
}

}